【问题标题】:Find and count from array in another array using linq C#使用linq C#从另一个数组中的数组中查找和计数
【发布时间】:2013-11-15 09:53:03
【问题描述】:

我有以下场景:

我从数据源获取记录集合并将它们添加到列表中

List<Entity> e = new List<Entity>();
foreach (var elm in datasource)
{
      e.Add(new Entity { First = elm.First, Second = elm.Second, Third = elm.Third });
}

这给了我类似的东西:

// -> First = John, Second = Sally, Third = Ingrid
// -> First = Sally, Second = Ingrid, Third = James
// -> First = Ingrid, Second = Sally, Third = James

我在一个列表中有一个可能值为真和可能值为负的数组

List<string> positives = { "John", "Sally" }
List<string> negatives = { "Ingrid", "James" }

我正在寻找一个优雅的为什么要匹配我在通用列表 e 中的正数和负数的数量,如上所述?使用 LINQ 可以实现这样的事情吗?

由于我不熟悉 LINQ,所以不知道从哪里开始。我试过类似的东西:

var pos = e.SelectMany(s => s in positives).Count()

但这会引发异常。

任何帮助将不胜感激

【问题讨论】:

    标签: c# arrays linq count


    【解决方案1】:

    LINQ 中SQL 的in 子句是Contains 方法。

    测试:

    var pos = e.SelectMany(s => positives.Contains(s)).Count();
    

    好像没看懂你的问题。再读一遍。

    老实说,您的问题措辞不好。
    但根据我的理解,我认为正确的回答是:

    var pos = e.SelectMany(i => positives.Contains(i.First) 
                                || positives.Contains(i.Second) 
                                || positives.Contains(i.Third)).Count();
    

    【讨论】:

      【解决方案2】:

      您错误地使用了in

      e.SelectMany(s => positives.Contains(s)).Count();
      

      但我猜你想要的是这个

      var pos = e.Count(s => positives.Contains(s.First) || positives.Contains(s.Second) ||positives.Contains(s.Third));
      
      var neg= e.Count(s => negatives.Contains(s.First) || negatives.Contains(s.Second) ||negatives.Contains(s.Third));
      

      【讨论】:

        【解决方案3】:

        或者你可以使用any

        var pos = e.SelectMany(i => 
            positives.Any(p=> p==i.First || p==i.Second || p==i.Third))
            .Count();
        

        【讨论】:

          猜你喜欢
          • 2012-09-25
          • 2016-07-26
          • 2021-04-03
          • 2011-06-16
          • 2021-07-18
          • 2018-10-27
          • 1970-01-01
          • 1970-01-01
          • 2022-09-27
          相关资源
          最近更新 更多