我有一张这样的 table
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
现在我需要获取特定月份中特定学生的 T 数,即表中的 Trues
StudID 是一个 varchar 字段
日期是日期时间字段
以及所有其他带位的数据类型
有任何想法吗?
最佳答案
正如评论所暗示的那样,您应该规范化您的数据。
但是,如果您无法做到这一点,您只需计算每行中的 true 数即可。
context.Studs.Sum(s => (s.I ? 1 : 0) + (s.II ? 1 : 0) + ... + (s.VIII ? 1 : 0));
编辑:要根据 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));
关于c# - 如何在 LINQ to SQL 中计算表中的 true 数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6524807/