linq 以指定名称的列作为查询条件

yeahe83 2012-07-02 05:50:01
如果我的字段都在一个集合里。

string fields[] = { "col1", "col2" };


我如何才能找出这些字段作为查询条件呢?

DataTable dt = new DataTable();
...

dt.Where (t => t.col1.contains("11") || t.col2.contains("11") );

似乎是动态的predicate的问题。

...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeahe83 2012-07-04
  • 打赏
  • 举报
回复
已解决,加上这个。剩下的只是重绘的栏无法查到了。

http://www.cnblogs.com/atison/articles/1325915.html
yeahe83 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

http://blog.csdn.net/q107770540/article/details/6133484
[/Quote]

感谢,本来想硬搬你处理Pets的写法的,但是发现除此之外,还要处理每个列,所以不得不把问题详细提出来了。
其实我想实现的是在"所有可见列"中查询的效果。

grid.DataSource = dt;
Func<T, bool> predicate = null;
foreach (var col in grid.Columns)
{
if (col.Visible)
//predicate = t => GetPropertyValue(t, col.FieldName).ToString().Contains(str);
}
grid.DataSource = dt.Where(predicate).ToList();

现在只剩下不知道怎么在每次loop时增量查询条件了。
EnForGrass 2012-07-02
  • 打赏
  • 举报
回复
用反射,GetPropertyValue可以实现你要的效果,督察已经给了
q107770540 2012-07-02
  • 打赏
  • 举报
回复
dt.Where (t => GetPropertyValue(t,"col1").Contains("11") );

private static object GetPropertyValue(object obj, string property)
{
System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);
return propertyInfo.GetValue(obj, null);
}
yangchun1213 2012-07-02
  • 打赏
  • 举报
回复
linq 木怎么用过
dopsop110 2012-07-02
  • 打赏
  • 举报
回复
用反射可以吧,没这样用过,你可以试试。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧