【问题标题】:Check if a specific value appears more than once in a table with a LINQ query使用 LINQ 查询检查特定值是否在表中出现多次
【发布时间】:2021-11-11 15:51:56
【问题描述】:

我试过了,但这不是我想要的:

var result = myList
    .GetQueryable()
    .GroupBy(g => g.Name)
    .Where(w => w.Name == "myName")
    .AnyAsync(a => a.Count() > 1);

如果找到多于 1 条记录,它应该返回 true,名称为 "myName"false,如果最多找到一个名称 "myName"

我在Where 子句中得到编译时错误。但我需要检查一个特定的值。

有什么想法吗?

【问题讨论】:

  • var result = myList.Where(item => item.Name == "myName").Skip(1).Any(); id 你想检查myList 是否包含至少 2Name 的项目"myName"

标签: c# linq


【解决方案1】:

GroupBy(它将对整个myList进行分组)和Count()(如果我们有,比如说123456789"myName"项目然后Count()将它们计数全部,然后与1进行比较:

var result = myList
  .Where(item => item.Name == "myName") // items of interest only
  .Skip(1)                              // Skip the first one
  .Any();                               // do we have second? 

我们过滤感兴趣的项目:WhereSkip第一个,并检查我们是否有第二个

【讨论】:

  • 这行得通,但我必须在 Where 子句之后添加一个 OrderBy。谢谢!
【解决方案2】:
bool result = (myList.Where(item => item.Name == "myName").Count() > 1)

【讨论】:

    【解决方案3】:
      var differentNames = myList.Select(l => l.name == "myName")
                                  .Distinct()
                                  .Count();
    
      var res = differentNames >= 2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2020-12-03
      • 2015-12-08
      相关资源
      最近更新 更多