将两个linq查询连接到一个查询
本文关键字:查询 一个 连接 两个 linq | 更新日期: 2023-09-27 18:13:26
我有以下linq查询。将两者连接到一个查询的最佳方法是什么?
List<string> consumerids = plays.Where(w => w.playyear == group_period.year
&& w.playmonth == group_period.month
&& w.sixteentile == group_period.group)
.Select(c => c.consumerid)
.ToList();
int groupcount = plays.Where(w => w.playyear == period.playyear
&& w.playmonth == period.playmonth
&& w.sixteentile == group
&& consumerids.Any(x => x == w.consumerid))
.Count();
请注意,这两个查询即使有一个相似的where子句在它们中使用不同的值(例如。group_period.year
和period.playyear
)
如果这两个查询做不同的事情,您可以将它们分开。这样更容易读懂。
你可以做的改进是使这两个查询在数据库中作为一个查询执行。
所有你需要做的是删除ToList()
:
您也可以将第二个Where
的谓词作为Count
的谓词
var consumerids = plays.Where(w => w.playyear == group_period.year &&
w.playmonth == group_period.month &&
w.sixteentile == group_period.group)
.Select(c => c.consumerid);
int groupcount = plays.Count(w => w.playyear == period.playyear &&
w.playmonth == period.playmonth &&
w.sixteentile == group &&
consumerids.Any(x => x == w.consumerid));