Linq / Lambda代码在vb中工作但不在c#中工作

时间:2015-09-11 13:19:05

标签: c# vb.net

以下适用于VB ..

Dim q = allValues.GroupBy(Function(u) u.R).Select(Function(grp) grp).OrderByDescending(Function(a) a.Count).ToList

但不是在C#..

dynamic q = allValues.GroupBy(u => u.R).Select(grp => grp).OrderByDescending(a => a.Count).ToList;

“allValues”是各种像素的颜色列表。我正在尝试将颜色R值分组并按计数降序排序以找到最常用的颜色。

我是C#和Lambda的菜鸟。这也是我在网站上的第一篇文章。谢谢你的任何帮助!

2 个答案:

答案 0 :(得分:5)

a.Count是一种方法,它需要括号 -

.OrderByDescending(a => a.Count())

ToList()也是如此。

还有一些小问题:

  • Select(grp => grp)毫无意义,您可以删除该位。
  • 结果不一定是dynamic - 您只需使用var

答案 1 :(得分:4)

正确的语法是

var q = allValues // probably you mean "var" instead of "dynamic"
   .GroupBy(u => u.R)
   .Select(grp => grp) // that's redundant, you can remove it
   .OrderByDescending(a => a.Count())
   .ToList();

()之后和Count之后注意ToList。 "()"意味着你调用方法。