linq到sql基于ID列表的聚合计数
本文关键字:列表 sql 基于 ID linq | 更新日期: 2023-09-27 18:21:22
考虑一个包含两个字段的表:FieldID和Position。Postion是一个范围从1到4的字节。
我正在编写一个函数,它接收FieldID的列表,并将linq中每个Positions中的项计数返回给sql。包含结果的对象有4个字段,其中包含每个计数。
这就是我所拥有的:
public MyObjectModel GetCount(List<int>TheList)
{
using (DC MyDC = new DC)
{
var Result = from t in MyDC.Table
where TheList.Select(i => i).Contains(t.FieldID)
select new MyObjectModel()
{
CountP1 = (from t in MyDC.Table
where t.Position = 1
where t.FieldID = ...).Count();
我很难根据我收到的参数列表进行计数。我是不是走错路了?我希望避免在4个不同的查询中单独查询每个计数,每个查询对应一个计数;我想在一次阅读中得到4个计数。你有什么建议。谢谢
为什么不先按Position
分组,然后在select
中返回每组的计数?
类似于:
var list = MyDC.Table
.Where( your filter )
.GroupBy( item => item.Position )
.Select( g => new { pos = g.Key, count = g.Count() )
.ToList();
// list contains items of type ( pos : int, count : int ) where pos is your Position
您甚至可以将其转换为具有key = pos
和val = count()
的字典,以便更容易地为您选择的模型选择值。