通过集合 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();
如果我传递的 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();