通过集合 ID 检索记录,LINQ

Retrieving records by collection IDs, LINQ

如果我传递的 ID 集合中存在该 ID,我想检索这些行。

这是我目前为止尝试过的方法。

var typeOfNeedIds = [1,2,3];
var query = (from up in _context.UserNeeds
             .Include(u => u.UserNeedTypes).ThenInclude(ut => ut.TypeOfNeed)
                where (typeOfNeedIds.IsNullOrEmpty() ||
                       typeOfNeedIds.All(id => up.UserNeedTypes.Select(t => t.TypeOfNeedId).Contains(id)))
                select up).AsNoTracking();

我也试过了

typeOfNeedIds.Any(id => up.UserNeedTypes.Any(t => t.TypeOfNeedId == id))

但是 none 有效。

我的代码有什么问题?任何帮助将不胜感激。

这将 return 所有 UserNeeds,其中 UserNeedTypes 至少包含 typeOfNeedIds.

之一
var typeOfNeedIds = [1,2,3];
var query = _context.UserNeeds.Where(un =>
                  un.UserNeedTypes.Any(unp =>
                      typeOfNeedIfs.Contains(unp.TypeOfNeedId)
                  )
            )
            .Include(u => u.UserNeedTypes)
            .ThenInclude(ut => ut.TypeOfNeed)
            .AsNoTracking();