Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Linq:其中count大于value_Linq - Fatal编程技术网

Linq:其中count大于value

Linq:其中count大于value,linq,Linq,我有一个linq查询,它接受日期和端口组合的列表。此查询必须从CruiseCalendar表返回数据,在该表中可以找到这些组合,但仅当计数大于1时。我无法计算groupby和count语法。var ShipRendevous是我被困的地方 var dateAndPort = (from r in context.CruiseCalendar where r.ShipId == shipId

我有一个linq查询,它接受日期和端口组合的列表。此查询必须从CruiseCalendar表返回数据,在该表中可以找到这些组合,但仅当计数大于1时。我无法计算groupby和count语法。var ShipRendevous是我被困的地方

        var dateAndPort = (from r in context.CruiseCalendar
                        where r.ShipId == shipId
                        && r.CruiseDayDate >= dateRange.First
                        && r.CruiseDayDate <= dateRange.Last
                        select new DateAndPort
                        {
                            Date = r.CruiseDayDate,
                            PortId = r.PortId
                        });

        var shipRendezvous = (from r in context.CruiseCalendar
                              where (dateAndPort.Any(d => d.Date == r.CruiseDayDate
                              && d.PortId == r.PortId))
                              orderby r.CruiseDayDate // (Added since first posting)
                              select r).ToList();
var dateAndPort=(来自context.CruiseCalendar中的r
其中r.ShipId==ShipId
&&r.CruiseDayDate>=日期范围。第一个
&&r.CruiseDayDate d.Date==r.CruiseDayDate
&&d.PortId==r.PortId))
orderby r.CruiseDayDate/(自首次发布后添加)
选择r.ToList();

您好,Guy

如果我没听错的话,您正在筛选与
日期和端口
的任何结果相匹配的每一个集合,然后希望自己对其进行分组以获得计数。在分组结果中,您只需要出现多次的结果集

var shipRendezvous = (from r in context.CruiseCalendar
                      where (dateAndPort.Any(d => d.Date == r.CruiseDayDate
                      && d.PortId == r.PortId))
                      select r)
                     .GroupBy(x => x.CruiseDayDate) //Groups by every combination
                     .Where(x => x.Count() > 1) //Where Key count is greater 1
                     .ToList();
根据您的评论,您希望再次展平列表。为此,请使用
SelectMany()


你好,服务员,谢谢。差不多了。原始查询有错误遗漏(抱歉,请参阅更新)。GroupBy(x=>x)返回了0条记录。更改为.GroupBy(x=>x.CruiseDayDate)。现在,它返回所需数量的结果,但不是CruiseCalendar结果列表,而是列表。我如何让它返回前者?我已经用额外的解决方案更新了我的答案,以“压平”您的结果。谢谢Serv,我已经将答案标记为良好(出现了另一个问题,但我认为它与其他问题有关)。你好,GuyWell,如果您自己无法解决,请提出另一个问题。
var shipRendezvous = (from r in context.CruiseCalendar
                      where (dateAndPort.Any(d => d.Date == r.CruiseDayDate
                      && d.PortId == r.PortId))
                      select r)
                     .GroupBy(x => x.CruiseDayDate) //Groups by every combination
                     .Where(x => x.Count() > 1) //Where Key count is greater 1
                     .SelectMany(x => x)
                     .ToList();