C# C语言中的Linq连接、计数、元组#

C# C语言中的Linq连接、计数、元组#,c#,linq,join,C#,Linq,Join,我有一个包含列的表:A、B和其他列(对于这个不重要) 比如说 A B C D Peter apple Thomas apple Thomas banana Lucy null 如何使用join获取元组列表{A,B}的计数 我的桌子是:{Peter,1},{Thomas,2},{Lucy,0} 谢谢您只需按A列上的记录分组,然后计算B不为空的位置 var result = (fro

我有一个包含列的表:A、B和其他列(对于这个不重要)

比如说

A           B           C         D
Peter      apple   
Thomas     apple
Thomas     banana
Lucy       null
如何使用join获取元组列表{A,B}的计数

我的桌子是:{Peter,1},{Thomas,2},{Lucy,0}


谢谢

您只需按A列上的记录分组,然后计算B不为空的位置

        var result = (from t1 in cartItems
                      group t1 by t1.A into t2
                      select new
                      {
                          t2.Key,
                          count = t2.Count(p=> p.B != null)
                      }).ToList();

既然您提到了表,我假设它是
DataTable

您可以使用简单的
Linq
语句来满足您的需要。查询返回
List
Tuple
包含两个字段Item1表示
Name
Item2表示
Count

var results = dt.AsEnumerable()
    .GroupBy(row=>row.Field<string>("A"))
    .Select(s=> new Tuple<string, int>(s.Key, s.Count(c=>c!=null)))         
    .ToList();
var results=dt.AsEnumerable()
.GroupBy(row=>row.Field(“A”))
.Select(s=>newtuple(s.Key,s.Count(c=>c!=null)))
.ToList();

检查这个

table.GroupBy(t=>t.A)。选择(g=>new{Name=g.Key,Count=g.Count(gg=>gg!=null)})^应该是
.Count(gg=>gg.B!=null)
如果示例
表中的
是相同的,那么您就不能在
t1上加入。一个相等的t2.B
因为它总是返回空的,因为A和B-具有不同值的不同列