如何从DataTable中选择*哪里...使用Linq

时间:2014-09-15 02:58:12

标签: c# linq datatable

我试图用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)进行过滤,但这对我来说也没有用。

2 个答案:

答案 0 :(得分:0)

LINQ查询实际上并未对您要查询的列表执行任何操作。该查询为您提供结果列表。如果您希望用户看到这些结果,那么您必须实际向他们展示这些结果,例如请调用ToArrayToList,或者在此情况下调用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;

    }