LINQ SQL包含All

时间:2014-03-19 14:28:03

标签: c# .net linq-to-sql

我有一个列表,其中包含一些软件包ID。

List<int> mustHavePackages = GetMustHavePackages();

和数据库表

public class Table
{
 public int UserID;
 public int PackageID;
}

我想从数据库中获取那些来自mustHavePackages列表的所有包的用户。

目前我只是让所有用户都拥有至少一个包来自mustHavePackages列表。

List<int> users =
(from t in db.Table
 where mustHavePackages.Contains(t.PackageID)
 select t.UserID).ToList();

现在我正在寻找像ContainsAll或类似的东西。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

var temp=
(from t in db.Table
 group t by t.UserId into g
 select new {UserId = g.Key, PackageIds = g.Select(gg=>gg.PackageId)}).ToList();

var users = (from t in temp
            where !mustHavePackages.Except(t.PackageIds).Any()
            select t.UserId).ToList();

或许这样的事情。您可以在第一部分中添加第二部分以进行一次调用而不带额外数据,这是为了向您显示细分。