【问题标题】:Retrieving records by collection IDs, LINQ按集合 ID 检索记录,LINQ
【发布时间】:2020-05-15 06:36:51
【问题描述】:

如果 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))

但没有一个有效。

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

【问题讨论】:

  • 类似collection.Where(item => typeOfNeedIds.Contains(item.Id)); ?

标签: c# linq collections many-to-many


【解决方案1】:

这将返回所有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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多