【问题标题】:How to use IN keyword in JOIN clause in LINQ如何在 LINQ 的 JOIN 子句中使用 IN 关键字
【发布时间】:2014-11-20 22:15:27
【问题描述】:

我有以下 SQL 查询。如何在 LINQ 中创建相同的查询?

select * from table1 t1
join table2 t2
on t1.col1 = t2.col1
where t2.col2 in ('A','B','C' )

【问题讨论】:

  • 我假设您的意思是使用诸如实体框架之类的 ORM?你真的需要告诉我们它是哪个 ORM 以及你的 c# 类是什么样的,以帮助你正确
  • 这是使用 CRM Linq 提供商
  • 你是用迟绑定还是早绑定?
  • @Sxntk:我正在使用后期绑定
  • 我可以通过以下链接弄清楚:stackoverflow.com/questions/4943728/…>

标签: c# dynamics-crm crm


【解决方案1】:

你可以使用Contains

string[] stringCollection = { "A", "B", "C" };
var query = from t1 in db.Table1
            join t2 in db.Table2
            on t1.col1 equals t2.col1
            where stringCollection.Contains(t2.col2)
            select new { t1, t2 };

【讨论】:

  • 我试过这个,但得到这个错误:无效的'where'条件。实体成员正在调用无效的属性或方法。
  • @Payal:也许thisthis 有帮助。
  • 这就是我当前 LINQ 查询的方式:(从 t1 in table1 join t2 in table2 on t1.col1 equals t2.col1 where t1.col2 == someStatusfield select new { A = t1, B = t2.col2 }).Where(r => r.B.Trim() == 变量).ToList();而不是 .Where(r => r.B.Trim() == variable),我需要使用带有字符串列表的 SQL IN 关键字。
  • 谢谢,所以 Contains 将不起作用。它将如何与我添加的上述 linq 查询一起工作?
  • @Payal:对不起,我不熟悉MS Dynamics CRM。也许我提供的链接很有帮助。到目前为止我使用的所有提供商都支持Contains
【解决方案2】:

您无法在 LinQ - 带有“IN”的 Crm 中查询。

您可以做的是检索记录,在您拥有List<Entityt> 之后,您可以使用 LinQ 或 foreach 来过滤您需要的记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多