Hem*_*ant 3 c# linq sql-server
我有一个"门票"表,有一些跟随结构(删除不必要的列)
int | string | int | ID | Window | Count | ------------------------ 0 | Internet | 10 | 1 | Phone | 20 | 2 | Fax | 15 | 3 | Fax | 10 | 4 | Internet | 5 | . | . | . | . | . | . |
我已将此表映射到"Ticket"类.所以我可以得到这样的所有记录:
var tickets = from t in db.Tickets
select t;
现在我需要获取表中唯一窗口名称的列表.对于上表,列表看起来像:
无论如何创建这个列表而不获取所有记录并迭代它们?
我正在使用SQL Server 2008快速版.
编辑:谢谢你的答案,它解决了上述问题.只要被贪婪,但有什么办法也得到了总数的每个窗口.例如:
Jon*_*eet 10
怎么样:
var tickets = db.Tickets.Select(t => t.Window).Distinct();
Run Code Online (Sandbox Code Playgroud)
我喜欢在我做多个操作时只使用查询表达式,但是如果你喜欢它们,则等效的是:
var tickets = (from t in db.Tickets
select t.Window).Distinct();
Run Code Online (Sandbox Code Playgroud)
要获得计数,您需要分组:
var tickets = from t in db.Tickets
group t by t.Window into grouped
select new { Window=grouped.Key,
Total=grouped.Sum(x => x.Count) };
foreach (var entry in tickets)
{
Console.WriteLine("{0}: {1}", entry.Window, entry.Total);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这应该最终都在数据库端执行 - 检查SQL查询以检查这一点.