使用Lambda表达式的LINQ Select Distinct Count

31

假设有一个 LINQ 表达式应用于一个对象集合 'items',如下所示:

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

这个能否使用LINQ函数/lambda表达式进行转换:

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

或者只需 items.GroupBy(p => p.Value).Count() - Slai
2个回答

52

使用这个:

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

谢谢 - 不知道为什么我没想到! - Kyle

11

至少对于LINQ到对象,它必须是可能的,因为在幕后,LINQ被转换为Lambda表达式和表达式树。

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

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

谢谢,对于这个描述点赞。不过恐怕丹尼尔已经回答了你的问题! - Kyle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接