Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# 如何在同时执行“GROUPBY”的linq查询中使用“where”子句?_C#_.net_Database_Linq - Fatal编程技术网

C# 如何在同时执行“GROUPBY”的linq查询中使用“where”子句?

C# 如何在同时执行“GROUPBY”的linq查询中使用“where”子句?,c#,.net,database,linq,C#,.net,Database,Linq,我有以下Linq声明: var packs = from r in new XPQuery<Roll>(session) join p in new XPQuery<Pack>(session) on r.Pack equals p group new { r, p } by new { r.Pack } into gb select new {

我有以下Linq声明:

var packs = from r in new XPQuery<Roll>(session)
            join p in new XPQuery<Pack>(session) on r.Pack equals p
            group new { r, p } by new { r.Pack } into gb
            select new
            {
                Length = gb.Sum(x => x.r.Length),
                ALength = gb.Where(a => a.r.Grade == "A").Sum(x => x.r.Length),
            };

gcPack.DataSource = packs;
var packs=from新XPQuery中的r(会话)
在r上的新XPQuery(会话)中加入p。Pack等于p
将新的{r.Pack}将新的{r,p}分组到gb中
选择新的
{
长度=gb.总和(x=>x.r.长度),
ALength=gb,其中(a=>a.r.Grade==“a”).Sum(x=>x.r.Length),
};
gcPack.DataSource=packs;
当它执行时,我得到一个运行时错误,如下所示:

其他信息:属性路径“r”对于类型“DataRepository.Roll”不正确,因为成员“DataRepository.Roll.r”不存在

我知道
alenight=gb。其中(a=>a.r.Grade==“a”).Sum(x=>x.r.Lenght)
会导致运行时错误,因为当我删除它时,代码执行时没有任何错误


是否可以在
select
语句中使用
where
?到底是什么问题?它不起作用,但如果我省略最后一部分,它就会起作用。恐怕我们没有心灵感应。你需要详细描述这个问题。它以什么方式不起作用?这会给你一个错误吗?如果是,错误是什么?请详细回答这个问题。啊,我现在明白了。在你的长度陈述中,在这种情况下,“r”是什么?(x.r.Length)为了清楚起见,我重新安排了问题的顺序。把问题的核心从中间抽出来,放在底部,这样很容易找到。我还将错误消息与生成错误的代码连接起来。如果
Lenght
真的是
Length
,我建议修复它,以减少读者记住这是有意拼写的负担。