Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在linq中的虚拟(预定义)列上分组_C#_Mysql_Linq_Linq To Entities_Grouping - Fatal编程技术网

C# 在linq中的虚拟(预定义)列上分组

C# 在linq中的虚拟(预定义)列上分组,c#,mysql,linq,linq-to-entities,grouping,C#,Mysql,Linq,Linq To Entities,Grouping,我正在尝试为我的一个仪表板编写一个linq查询,该仪表板根据某些条件检索数据。我想根据表中可用的不同状态显示记录计数 下面是我试图转换为Linq的SQL查询 select count(id) cnt, 'Available' label from table where date = sysdate 上面的查询在DB IDE中返回下面的结果。这就是我想要的linq的结果 cnt label 0 Available 我尝试了以下linq查询,但它返回0计数,因此无法检索结果 v

我正在尝试为我的一个仪表板编写一个linq查询,该仪表板根据某些条件检索数据。我想根据表中可用的不同状态显示记录计数

下面是我试图转换为Linq的SQL查询

select count(id) cnt, 'Available' label from table where date = sysdate
上面的查询在DB IDE中返回下面的结果。这就是我想要的linq的结果

cnt    label
0      Available
我尝试了以下linq查询,但它返回0计数,因此无法检索结果

var data = (from a in context
where a.date = System.DateTime.Now
group a in a.id into g
select new {
cnt = g.Count(),
label = 'Available'
}).ToList();
如何在linq中实现上述结果。谢谢你的帮助

谢谢

-----------编辑------------------- 更新的LINQ查询

var data = (from a in context.TableA
where a.id = uniqueID
group a in a.id into g
select new {
cnt = g.Count(),
label = 'Available'
}).Concat(from a in context.TableB
where a.id = uniqueID
group a in a.id into g
select new {
cnt = g.Count(),
label = 'WIP'
}).ToList();

要计算linq查询中与谓词匹配的元素数,只需使用
where
子句:

var results =
    from a in context
    where a.date.Date == DateTime.Now.Date
       && a.id == someIdHere
    select a;

var data = new {
    count = results.Count(),
    label = "Available"
};
或者,在扩展方法语法中(我更喜欢):


在比较
DateTime
对象与您想要的结果时也要小心;比较
DateTime。现在
与日期比较可能返回false,因为它也会比较时间代码,使用
DateTime.Date
属性仅从对象获取日期以进行比较。

要计算linq查询中与谓词匹配的元素数,只需使用
where
子句:

var results =
    from a in context
    where a.date.Date == DateTime.Now.Date
       && a.id == someIdHere
    select a;

var data = new {
    count = results.Count(),
    label = "Available"
};
或者,在扩展方法语法中(我更喜欢):


在比较
DateTime
对象与您想要的结果时也要小心;比较
DateTime.Now
与日期将返回false,因为它也会比较时间代码,请使用
DateTime.date
属性仅从对象中获取日期,以便进行比较。

SQL查询中没有where子句,但在Linq中有where子句,我怀疑您的tables date列是否与当前的DateTime相同。现在(我可以保证不是这样)。从linq中删除“where”。是要计算数据中具有特定id的元素数,还是要计算数据中具有唯一id的元素数?@DISTRISA-我已更新SQL查询。请参考最新版本。它仍然在DB IDE中返回1行,但不使用linq。仅供参考,我需要这个where条件来过滤结果。Thanks@AlexeiBarnes-我需要计算数据中属于特定ID的元素数。如果您看到我放入linq。感谢您在SQL查询中没有where子句,但在Linq中有where子句,我怀疑您的tables date列与当前DateTime相同。现在(我可以保证它不是)。从linq中删除“where”。是要计算数据中具有特定id的元素数,还是要计算数据中具有唯一id的元素数?@DISTRISA-我已更新SQL查询。请参考最新版本。它仍然在DB IDE中返回1行,但不使用linq。仅供参考,我需要这个where条件来过滤结果。Thanks@AlexeiBarnes-我需要计算数据中属于特定ID的元素数。如果您看到我放入linq。感谢您的回复。看看LINQ和lambda表达式,它应该可以像预期的那样工作,但是我们不能在单个查询中输出它。事实上,我在linq中使用了“Concat”扩展方法来获得基于不同标签的结果,因此我尝试使用一个linq,它给出了基于不同标签的记录计数。这是可能的,但我可以通过将所有内容强制到一个查询中来避免过于复杂的事情;在我的经验中,想要把所有的东西都放到大型语句中只会导致无法维护的代码。如果回答了您的问题,请记住将此标记为答案。是的,我知道这可能是一个复杂的linq,但我建议使用一个查询,根据建议检索整个数据,而不是使用多个DB Trip,因此采用此方法。如果我们将聚合逻辑与LINQ放在一起,我不会同意“不可维护的代码”。这取决于您试图管理的linq和逻辑的编写方式。看,我已经用“Concat”语句更新了我的问题。谢谢这已变成多个问题,请不要编辑您的问题以包含新问题,只需打开一个新问题。现在;如果您想要合并集合,那么我建议您在需要透视的情况下查找
Join
扩展方法,首先连接集合,然后对结果执行查询。感谢您的回复。看看LINQ和lambda表达式,它应该可以像预期的那样工作,但是我们不能在单个查询中输出它。事实上,我在linq中使用了“Concat”扩展方法来获得基于不同标签的结果,因此我尝试使用一个linq,它给出了基于不同标签的记录计数。这是可能的,但我可以通过将所有内容强制到一个查询中来避免过于复杂的事情;在我的经验中,想要把所有的东西都放到大型语句中只会导致无法维护的代码。如果回答了您的问题,请记住将此标记为答案。是的,我知道这可能是一个复杂的linq,但我建议使用一个查询,根据建议检索整个数据,而不是使用多个DB Trip,因此采用此方法。如果我们将聚合逻辑与LINQ放在一起,我不会同意“不可维护的代码”。这取决于您试图管理的linq和逻辑的编写方式。看,我已经用“Concat”语句更新了我的问题。谢谢这已变成多个问题,请不要编辑您的问题以包含新问题,只需打开一个新问题。现在;如果您想要合并集合,那么我建议您在需要透视的情况下查找
Join
扩展方法,首先连接集合,然后对结果执行查询。