我有一个列表,其中包含一些软件包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或类似的东西。
任何帮助将不胜感激。
答案 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();
或许这样的事情。您可以在第一部分中添加第二部分以进行一次调用而不带额外数据,这是为了向您显示细分。