结果LinQ查询进行比较
本文关键字:比较 查询 LinQ 结果 | 更新日期: 2023-09-27 18:19:00
. NET使用c#
从下面的查询,
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();
我想比较生成的查询结果,如Location, Country与DataTableLocation和Country
的每个DataRowOR反过来,我想比较每个查询结果与每个数据表行
如何执行相同的操作?
样本数据表:
Location Country
Bangalore India
Hyderabad India
Florida USA
London UK
Delhi India
检查是否匹配:
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连接两个列表。有点难,但我认为这会更有效率。
试试这个
创建一个类
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
}
}
机密数据库呢?见http://gehirnwindung.de/post/2010/05/19/LINQ-Extension-Methods-Intersect.aspx