LINQ 以 Lambda 形式选择不同计数

Posted

技术标签:

【中文标题】LINQ 以 Lambda 形式选择不同计数【英文标题】:LINQ Select Distinct Count in Lambda form 【发布时间】:2011-09-30 09:29:39 【问题描述】:

给定一个对象集合“项目”的 linq 表达式,例如:

var total = (from item in items select item.Value).Distinct().Count()

是否可以将其转换为使用 linq 函数/lambda:

items.Select(???).Distinct().Count()

【问题讨论】:

或只是items.GroupBy(p => p.Value).Count() 【参考方案1】:

使用这个:

items.Select(i => i.Value).Distinct().Count()

【讨论】:

谢谢 - 不知道我怎么没试过!【参考方案2】:

这一定是可能的,因为在幕后,LINQ 被转换为 lambdas 和表达式树(至少 LINQ 到对象)

在您的情况下,??? 部分将是 item => item.Value,即对于 item,输出 item.value。 所以,整个表达式将是

var total = items.Select(item => item.Value).Distinct().Count();

【讨论】:

谢谢,+1 的描述,但恐怕丹尼尔会打败你!

以上是关于LINQ 以 Lambda 形式选择不同计数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 LINQ 选择语句中使用 Lambda

是否可以将 Linq 中的 lambda 参数化为实体选择

Linq之Lambda表达式

LINQ/Lambda 表达式:加入列表并使用给定公式查找数据的平均计数

用于从实体类及其导航属性中选择多个列的 Linq Lambda 表达式

使用Linq to Entities在一个请求中选择计数和计数