Linq - 记录包含另一个集合中的任何项目

时间:2018-02-20 12:52:15

标签: asp.net-mvc linq

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

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

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

model.selectedAges = List<int> selectedAges 

我对linq

有以下查询
orglist = orglist
        .Where(o => o.AgeGroupCollection.Any(l=>l.AgeGroupID=model.selectedAges.Any());

我无法获得该部分。无法为我工作。

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

2 个答案:

答案 0 :(得分:4)

您想知道selectedAges Any中的AgeGroupID是否包含o的{​​{1}}?然后尝试这样:

AgeGroupCollection

答案 1 :(得分:2)

您可以像public NewsItem SelectedNewsItem {get;set;}//INPC when it is being set check for null and then process the selected item.

一样对此进行测试
inThis.Any(i => 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);
    }
}