首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LINQ to SQL中计算表中的trues数

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

Stack Overflow用户
提问于 2011-06-30 01:29:42
回答 5查看 162关注 0票数 4

我有一张这样的桌子

代码语言:javascript
复制
 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的数量,StudID是一个可变字符字段Date是一个datetime字段,所有其他数据类型都是位

有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2011-06-30 01:38:10

正如评论所建议的,您应该规范化您的数据。

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

代码语言:javascript
复制
context.Studs.Sum(s => (s.I ? 1 : 0) + (s.II ? 1 : 0) + ... + (s.VIII ? 1 : 0));

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

代码语言:javascript
复制
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));
票数 7
EN

Stack Overflow用户

发布于 2011-06-30 01:46:53

代码语言:javascript
复制
var numberOfTrues = context.Students.
Where(x => x.StudID == 123 && x.Date.Month == studentMonth).
Sum(x => x.I.ToInt() + x.II.ToInt() + ... + x.VIII.ToInt());


// Add extension method    
public static int ToInt(this bool value)
{
   return value ? 1 : 0;
}
票数 2
EN

Stack Overflow用户

发布于 2011-06-30 01:54:26

代码语言:javascript
复制
var student = context.Students.Where(s => s.StudID == id && s.Date.Month == month).Single();

var trues = from results in student.GetType().GetProperties().Where(p => p.PropertyType == typeof(bool))
    let val = (bool)f.GetValue(student, null)
    where val
    select val;
// You can now check trues.Count()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6524807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档