【问题标题】:Linq - where a record contains any items within another collectionLinq - 记录包含另一个集合中的任何项目
【发布时间】:2018-02-20 12:52:14
【问题描述】:

我正在搜索组织,用户可以按年龄组过滤。

我想查找至少选择了一个年龄组的所有组织。

选定的年龄组存储在一个整数列表中:

model.selectedAges = List<int> selectedAges 

我对 linq 有以下查询

orglist = orglist
        .Where(o => o.AgeGroupCollection.Any(l=>l.AgeGroupID=model.selectedAges.Any());

在 .Any 之后我无法获得该部分来为我工作。

我需要它来获取 agegroupID == 到所选年龄列表中任何整数的任何记录。

【问题讨论】:

    标签: asp.net-mvc linq


    【解决方案1】:

    您想知道selectedAges 是否包含AgeGroupID 中的AnyoAgeGroupCollection 中?然后像这样尝试:

    orglist = orglist.Where(o =>
            o.AgeGroupCollection.Any(l => model.selectedAges.Contains(l.AgeGroupID)));
    

    【讨论】:

      【解决方案2】:

      你可以这样测试inThis.Any(i =&gt; searchThis.Contains(i));

      using System.Collections.Generic;
      using System;
      using System.Linq;
      
      public class Program
      {    
          static Random r = new Random(); 
      
          public static void Main()
          {           
              // Testdata
              var searchThis = Enumerable.Range(1,12).Select(_ => r.Next(1,100)).ToList();            
      
              var inThis = Enumerable.Range(1,5).Select(_ => r.Next(90,100)).ToList(); 
      
              bool isIn = inThis.Any(i => searchThis.Contains(i));
      
              inThis.Sort();      // for ease of outputting 
              searchThis.Sort();
              Console.WriteLine(string.Join(",",searchThis));
              Console.WriteLine(string.Join(",",inThis));
              Console.WriteLine(isIn);
          }
      }
      

      这是简化的,因为您没有提供您的课程 - 但它应该可以理解这个想法。输出:

      2,13,18,20,33,43,46,56,62,68,79,80  // searchThis
      92,93,94,94,95                      // inThis
      False
      
      6,11,18,37,39,49,52,58,67,68,71,82  // searchThis
      92,95,95,96,98                      // inThis
      False
      
      1,2,25,27,32,39,53,61,63,88,89,95   // searchThis
      90,94,95,96,99                      // inThis
      True
      

      【讨论】:

        猜你喜欢
        • 2012-03-31
        • 2016-05-16
        • 2013-12-21
        • 2019-03-28
        • 1970-01-01
        • 2015-02-01
        • 1970-01-01
        • 2019-07-12
        • 2014-12-18
        相关资源
        最近更新 更多