我试图用linq过滤数据表,我试过这样做..
string strFind = "Road";
var query = from a in res.AsEnumerable()
where (a.Field<string>("Last Name") == strFind ||
a.Field<string>("First Name") == strFind ||
a.Field<string>("Address") == strFind)
select a;
我还有大约5个其他列也要过滤掉,这是现在正在测试代码以确定它是否可行,而且它没有。 我尝试将数据表放入列表并使用.Contains(strFind)进行过滤,但这对我来说也没有用。
答案 0 :(得分:0)
LINQ查询实际上并未对您要查询的列表执行任何操作。该查询为您提供结果列表。如果您希望用户看到这些结果,那么您必须实际向他们展示这些结果,例如请调用ToArray
或ToList
,或者在此情况下调用CopyToDataTable
,然后将该结果绑定到网格或其他内容。
答案 1 :(得分:0)
它也有效:
var query = res.AsEnumerable()
where (a.Field<string>("Last Name") .CustomContains(strFind,StringComparison.OrdinalIgnoreCase) ||
a.Field<string>("First Name") .CustomContains(strFind,StringComparison.OrdinalIgnoreCase) ||
a.Field<string>("Address") .CustomContains(strFind,StringComparison.OrdinalIgnoreCase)
).ToList()
使用以下扩展方法解决 strFind
中的区分大小写 public static bool CustomContains(this string source, string toCheck, StringComparison compare)
{
return source.IndexOf(toCheck, compare) >= 0;
}