日期:2014-05-17  浏览次数:20714 次

LINQ语句问题
有一datatable
Name(姓名)  status(状态)
 A            正常
 A            违规
 A            正常
 A            违规
 A            违规
 A            正常
 B            正常
 B            违规
 B            违规
 B            违规
 B            违规
 B            违规
 C            正常
 C            违规

现要统计得以下结果 
Name     总次数    违规次数  正常次数
A          6         3         3
B          6         5         1
C          2         1         1

现在通过linq 我只能分别返回每个人 总的次数,总违规次数 总正常次数 现想向求一条 linq 就可以把这三项数据都返回


------解决方案--------------------
  var list = dt.AsEnumerable().GroupBy(t => t.Field<string>("Name")).Select(t => new
            {
                Name=t.Key,
                Sum=t.Count(),
                Sum_WeiGui = t.Count(tt => tt.Field<string>("status") == "违规"),
                Sum_ZhengChang = t.Count(tt => tt.Field<string>("status") == "正常")
            }).ToList();

------解决方案--------------------
试着写了一下

		var stateinfo = from t in table.AsEnumerable()
                    group t by t.Field<string>("Name") into r
        &nb