我有一个数据库和Excel文件
我想将字符串导出到excel
如何导出我知道的具有1个id的字符串
您可以在下面看到的代码
_Hours = Rep.Where(o => o.Projects.ProjectGroupID == 4).Where(o => o.Projects.ProjectType == 1).Sum(o => (decimal?)o.TaskEfforts) ?? 0m,
但是我该如何选择几个ID?
这不起作用
_Hours = Rep.Where(o => o.Projects.ProjectGroupID == 4).Where(o => o.ProjectDescriptionID == 10).Where(o => o.ProjectDescriptionID == 17).Where(o => o.ProjectDescriptionID == 18).Where(o => o.ProjectDescriptionID == 19).Where(o => o.ProjectDescriptionID == 21).Where(o => o.ProjectDescriptionID == 24).Where(o => o.ProjectDescriptionID == 26).Where(o => o.Projects.ProjectType == 1).Sum(o => (decimal?)o.TaskEfforts) ?? 0m,
我知道这是一个错误,但是如何选择一些ID?
感谢答案。
答案 0 :(得分:2)
之所以不起作用,是因为每个where子句都在处理上一个输出的数据子集。
将列表用于LINQ查询的布尔逻辑。
List<int> ids = new List<int>{ 10, 17, 13, 7 };
_Hours = Rep.Where(o => ids.Contains(o.Projects.ProjectGroupID)).Where(o => o.Projects.ProjectType == 1).Sum(o => (decimal?)o.TaskEfforts) ?? default(int);
通过以这种方式操作布尔值,您实际上可以将整数列表转换为对象列表。
对于您的第二个where子句,我看到您需要一个不同的属性来进一步限制列表。这将是可行的,因为每个where子句都会根据第一个子句的结果进行操作,但是出于读者的考虑,它应该是&&。
_Hours = Rep.Where(o => ids.Contains(o.Projects.ProjectGroupID) && o.Projects.ProjectType == 1).ToList();
答案 1 :(得分:0)
您在正确的轨道上!如评论中所述,您可以使用||。 (OR)运算符,如果ID匹配,则选择o
对象。在这种情况下,您只需要一个位置。这是您写出的示例:
_Hours = Rep.Where(o => o.Projects.ProjectGroupID == 4 || o.ProjectDescriptionID == 10 || o.ProjectDescriptionID == 17 || o.ProjectDescriptionID == 18 || o.ProjectDescriptionID == 19 || o.ProjectDescriptionID == 21 || o.ProjectDescriptionID == 24 || o.ProjectDescriptionID == 26).Where(o => o.Projects.ProjectType == 1).Sum(o => (decimal?)o.TaskEfforts) ?? 0m,
编辑:在OR末尾没有实现ProjectType属性检查。使其成为自己的WHERE选择器