如果T2是T1属性之一,如何检查<t1>的集合是否包含<t2>的集合?

时间:2017-10-31 06:54:05

标签: c# entity-framework collections

我有一个本地的ID列表,我需要在DB.Table中检查此ID的存在。

我写了以下代码:

List<int> localIdList;
//filling localIdList
var idArrayFromDb = DB.Table
                     .Select(s => s.ID)
                     .ToArray();
bool isSubset = !localIdList
                .Except(idListFromDb)
                .Any();

目前它运作良好,但我认为这不是解决这个问题的最佳方法。

所以我想知道,如果不收集数据库中的ID或更好的方法,我可以这样做吗?

2 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用List&lt;&gt;的Contain()方法。

bool isSubset = DB.Table.Where(s => localIdList.Contains(s)).Any();

@CodeCaster 1提到的一个drawback是它将受localIdList长度的限制。

答案 1 :(得分:-1)

试试这个

//sample
        List<int> t1 = new List<int>();
        t1.Add(1);
        t1.Add(2);
        t1.Add(3);

        List<int> t2 = new List<int>();
        t2.Add(2);

        bool res = t2.Any(a => t1.Any(b => b == a));
        Console.WriteLine("res :" + res);

    // your solution here
    bool isSubset  = DB.Table.Any(s => localIdList.any(l=> l == s.ID));