如何计算LINQ to SQL中表中的trues数

dia*_*ond 4 c# asp.net linq-to-sql

我有一张这样的桌子

 StudID   Date      I  II  III  IV   V   VI   VII  VIII 
-------------------------------------------------------------- 
  100    2-10-11    T   T   F    F   F   F     F     T
  101    2-10-11    T   T   T    F   F   F     F     T
  100    3-10-11    T   F   F    F   F   F     F     T
  100    4-10-11    T   F   F    F   F   F     F     T
Run Code Online (Sandbox Code Playgroud)

现在我需要得到T的数量,即特定学生在特定月份的表中的真实数量.StudID是varchar字段Date是日期时间字段,所有其他数据类型是bit

有任何想法吗?

Kir*_*rst 7

正如评论所示,您应该规范化您的数据.

但是,如果您无法做到这一点,您只需要计算每行中的trues数.

context.Studs.Sum(s => (s.I ? 1 : 0) + (s.II ? 1 : 0) + ... + (s.VIII ? 1 : 0));
Run Code Online (Sandbox Code Playgroud)

编辑:要根据StudID和月限制总和,您可以使用Where运算符

var id = "100";
var month = 10;

var set = context.Studs.Where(s => s.StudID == id;
set = set.Where(s => s.Date.Month == month);

return set.Sum(s => (s.I ? 1 : 0) + (s.II ? 1 : 0) + ... + (s.VIII ? 1 : 0));
Run Code Online (Sandbox Code Playgroud)