C# 将Lambda表达式组按转换为LINQ版本 请考虑此代码: var result = data .GroupBy(a => groupA.Contains(a.Group) ? "A" : groupB.Contains(a.Group) ? "B" : "N/a") .Select(a => new { KEY = a.Key, VALUE = a.Count() });

C# 将Lambda表达式组按转换为LINQ版本 请考虑此代码: var result = data .GroupBy(a => groupA.Contains(a.Group) ? "A" : groupB.Contains(a.Group) ? "B" : "N/a") .Select(a => new { KEY = a.Key, VALUE = a.Count() });,c#,.net,linq,C#,.net,Linq,任何人都可以帮助将GroupBy转换为LINQ版本吗 谢谢 编辑1) 我想要这种款式: from a in .... group a by .... select ... 你可以尝试这样的想法,但如果可行的话,我会坚持你的想法 var result= from p in data group p by new { Criterion = p.Contains(p.Group) ? "A" : p.Contains(p.Group) ? "B" : "N/a" }

任何人都可以帮助将
GroupBy
转换为
LINQ
版本吗

谢谢


编辑1)

我想要这种款式:

from a in ....
group a by ....
select ...

你可以尝试这样的想法,但如果可行的话,我会坚持你的想法

 var result=   from p in data
    group p by new 
   { Criterion = p.Contains(p.Group) ? "A" : p.Contains(p.Group) ? "B" : "N/a" } 
    into g  select new {KEY = g.Key, VALUE = g.Count()};

你可以尝试这样的想法,但如果可行的话,我会坚持你的想法

 var result=   from p in data
    group p by new 
   { Criterion = p.Contains(p.Group) ? "A" : p.Contains(p.Group) ? "B" : "N/a" } 
    into g  select new {KEY = g.Key, VALUE = g.Count()};
试试这个

        var result = from a in data
                     group a by groupA.Contains(a.Group)
                                    ? "A"
                                    : groupB.Contains(a.Group)
                                          ? "B"
                                          : "N/a"
                     into d
                     select new
                                {
                                    KEY = d.Key,
                                    VALUE = d.Count()
                                };
试试这个

        var result = from a in data
                     group a by groupA.Contains(a.Group)
                                    ? "A"
                                    : groupB.Contains(a.Group)
                                          ? "B"
                                          : "N/a"
                     into d
                     select new
                                {
                                    KEY = d.Key,
                                    VALUE = d.Count()
                                };

sry不明白。它不是linq了吗?你的意思是“查询表达式”吗?如果是这样的话,就去找林帕德去巴纳纳吧。你应该坚持流畅的风格,因为它使你的代码看起来更好。我用旧风格写我项目中的所有查询,我想知道用旧风格查询的等价物。请在我的第一条评论中看到我的建议。你不会不高兴的,答应我:Dsry不明白。这不是linq吗?你的意思是“查询表达式”吗?如果是这样的话,就去找林帕德去巴纳纳吧。你应该坚持流畅的风格,因为它使你的代码看起来更好。我用旧风格写我项目中的所有查询,我想知道用旧风格查询的等价物。请在我的第一条评论中看到我的建议。你不会不高兴的,承诺:谢谢。还有一个小问题。在第一个
Lambda表达式中,当我使用
KEY=g.KEY
并将我的查询绑定到gridview时,它会显示
A
B
,但在你的代码中,当我将结果绑定到gridview时,它不会显示KEY。我如何在不使用
KEYA=g.KEY.A的情况下显示该列,KEYB=g.Key.B
。我只想要一列,谢谢。还有一个小问题。在第一个
Lambda表达式中
query当我使用
Key=g.Key
并将我的查询绑定到gridview时,它会显示
A
B
,但在你的代码中,当我将结果绑定到gridview时,它不会显示Key。我如何在没有关键字的情况下显示该列使用
KEYA=g.Key.A,KEYB=g.Key.B
。我只需要一列