【问题标题】:Having multiple Ids on linq-sql join query in c#在 c# 中的 linq-sql 连接查询上有多个 ID
【发布时间】:2019-08-02 15:03:26
【问题描述】:

我有一个获取记录的linq-to-sql 查询。

首先,我有一个变量可以保存一个Id或多个Id。

var consumerId = _context.Consumers.Where(x => x.UsrDefault.Equals("True"));
// This can return one or an array of Ids. 

然后,我有一个 linq-to-sql 查询如下:

var query = (from users in _context.Users 
            join consumers in _context.Consumers 
            on usersId equals consumerId 
            select new UserConsumerDto 
            {
             FirstName = users.FirstName, 
             LastName = users.LastName
            }).ToList()

我的问题是,当我有多个consumerId 时,我该如何执行这个linq-to-sql 查询?我想避免任何 foreach 循环。

有人可以建议吗?

【问题讨论】:

  • 如果它是一个 Id 数组,那么相等将永远无法正常工作。相反,您必须将其设为 IN 子句 (Contains())

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


【解决方案1】:

Contains是这里要使用的方法或Any()

见下面的代码sn-p:

var query = (from users in _context.Users 
            join consumers in _context.Consumers 
            on users.usersId equals consumers.consumerId 
            where consumerId.Contains(consumers.consumerId)
            select new UserConsumerDto 
            {
             FirstName = users.FirstName, 
             LastName = users.LastName
            }).ToList()

对于任何:

where consumerId.Any(id => id == consumers.consumerId)

【讨论】:

  • Assalamualaikum Ehsan。谢谢你的回答。这样做的另一种方法可能是:join consumers on consumers.Id IN (consumerId) 你有这个建议吗?
  • Walaikum Salaam,我不确定它是否会被翻译成正确的 sql,如果可以的话可以尝试
  • 谢谢兄弟的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多