在.NET 3.5中,使用C#的ASP.NET
从下面的查询中
var query = table.AsEnumerable()
.Where(p => p.Field<string>("Customer_Code") == "1001")
.Select(p => new
{
Location = p.Field<string>("Location"),
Country = p.Field<string>("Country")
})
.Distinct();
我想比较结果查询结果,例如位置,国家/地区与 DataTable 位置和国家<的每个DataRow / em>的
或反过来, 我想将每个查询结果与每个DataTable Row进行比较
我该如何表现呢?
数据表示例:
Location Country
Bangalore India
Hyderabad India
Florida USA
London UK
Delhi India
答案 0 :(得分:1)
试试这个
创建一个类
Class Temp
{
public String Location {get;set;}
public String Country {get;set;}
}
然后
List<Temp> list = table.AsEnumerable()
.Where(p => p.Field<string>("Customer_Code") == "1001")
.Select(p => new Temp()
{
Location = p.Field<string>("Location"),
Country = p.Field<string>("Country")
})
.Distinct().ToList();
然后像这样比较
foreach (Temp t in list)
{
foreach(DataRow row in table.Rows)
{
//do your comparison
}
}
答案 1 :(得分:1)
如何进行以下操作以检查匹配项:
foreach(DataRow row in table.Rows)
{
var result = query.SingleOrDefault(x=>
x.Location.ToLower() = row["Location"].ToLower()
&& x.Country.ToLower() = row["Country"].ToLower()
);
if(result != null)
{
//Hurray, result is a match!
}
}
注意:的
* .Where(...).Count >0
检查可能更好地取决于您在查询中找到的内容。如果您预计会有多次点击,请使用.Where()
代替.SingleOrDefault()
新想法 如果您不介意处理DataTable并将其存储在IEnumerable中,则可以使用LINQ-joins连接这两个列表。有点难,但我认为它会更有效率。
答案 2 :(得分:1)