TSQL 到 LINQ 转换参考?

Posted

技术标签:

【中文标题】TSQL 到 LINQ 转换参考?【英文标题】:TSQL to LINQ conversion reference? 【发布时间】:2009-02-14 02:46:30 【问题描述】:

我正在尝试找到一个很好的参考来帮助我将此 TSQL 语句转换为 Linq:

示例:

SELECT * FROM Categories WHERE ProductID IN (SELECT ProductID FROM ProductCategories WHERE CatID = 23)

我找不到任何地方可以参考如何执行 WHERE "IN" 部分。

【问题讨论】:

【参考方案1】:

虽然它完全不是 TSQL 到 LINQ 的参考,但我发现 MSDN 上的 101 LINQ Samples 页面对此很有帮助。

另见this related question

【讨论】:

谢谢 - 这是:msdn.microsoft.com/en-us/vcsharp/aa336761.aspx#intersect2 我在找什么? TSQL“IN”=Linq“相交”? 哎呀 - 我刚刚看到你的“这个相关问题”,它给了我正在寻找的答案。【参考方案2】:

看看这是否有效:

var qry = from c in Categories
          where (from pc in ProductCategories where pc.CatID = 23 select pc.ProductID).Contains(c.ProductID)
          select c;

我不知道 LinqToSQL 中的 IN WHERE 部分是否有直接翻译(未找到任何参考),但我将其替换为 Contains

【讨论】:

【参考方案3】:

使用扩展方法...

var productIDs = context.ProductCategories
                        .Where( c => c.CatID == 23 )
                        .Select( c => c.ProductID );
var categories = context.Categories
                        .Where( c => productIDS.Contains( c => c.ProductID ) );

编辑:101 Linq Samples 对于简单的事情来说是一个很好的参考。对于更复杂的东西,我发现我通常不得不求助于谷歌。仅供参考,如果您想搜索 ***,我发现使用 google 并指定 site: ***.com 效果更好。 YMMV。

【讨论】:

以上是关于TSQL 到 LINQ 转换参考?的主要内容,如果未能解决你的问题,请参考以下文章

TSQL:从字符串转换日期和/或时间时转换失败

TSQL 数据类型转换

使用主键节点将 TSQL 转换为 NoSQL

TSQL - 更好的 INT 转换函数

将 T-SQL 转换为 MySQL

将 PL/SQL 定义转换为 TSQL