【问题标题】:Using linq to check count of IEnumerable list使用 linq 检查 IEnumerable 列表的计数
【发布时间】:2019-01-07 17:06:28
【问题描述】:

我有一个 IEnumerable 类型的列表。

在我的 linq 中,我只想说如果这个列表的计数大于 0 并且它包含在查询中,那么它应该只包含 ref 包含在列表中的结果,否则如果计数为零则返回全部。

我收到错误:

operator > 不能应用于方法组类型的操作数和 '初始化'

public IEnumerable<int> Workareas { get; set; }

var workareas = trackAnalyticsService.GetWorkareas(new Track.TrackDataFilter(new int[] { companyId }, null, from, to, userFirmRef), maxWorkareas);

【问题讨论】:

  • 什么是操作数错误?请给出完整的错误信息。如果您只想知道列表是否包含任何项目,您可能还想使用.Any(...) 而不是.Where(...)。请提供一些实际代码,因为您上面显示的不可能是您所拥有的。
  • 如果你能提供一个minimal reproducible example(编译)样本数据和基于该样本数据的预期结果,那就太棒了。

标签: c# list linq where contains


【解决方案1】:

operator > 不能应用于方法组和'init'类型的操作数

最后一个词应该是“init”而不是“int”吗? (Int 更有意义)。

大概在某个地方你有workareas.Count &gt; 0。除了IEnumerables 没有Count 属性;他们有一个Count() 方法。 (由于一个方法在使用不带参数的方法名时可以有很多重载,因此称为“方法组”)

所以,你想要workareas.Count() &gt; 0。但实际上,你想要workareas.Any()(一旦找到它就会停止查找,而不是计算每个)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多