【发布时间】:2009-02-14 02:46:30
【问题描述】:
我正在尝试找到一个很好的参考来帮助我将此 TSQL 语句转换为 Linq:
示例:
SELECT * FROM Categories WHERE ProductID IN (SELECT ProductID FROM ProductCategories WHERE CatID = 23)
我找不到任何地方可以参考如何执行 WHERE "IN" 部分。
【问题讨论】:
我正在尝试找到一个很好的参考来帮助我将此 TSQL 语句转换为 Linq:
示例:
SELECT * FROM Categories WHERE ProductID IN (SELECT ProductID FROM ProductCategories WHERE CatID = 23)
我找不到任何地方可以参考如何执行 WHERE "IN" 部分。
【问题讨论】:
虽然它完全不是 TSQL 到 LINQ 的参考,但我发现 MSDN 上的 101 LINQ Samples 页面对此很有帮助。
【讨论】:
看看这是否有效:
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。
【讨论】:
使用扩展方法...
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 对于简单的事情来说是一个很好的参考。对于更复杂的东西,我发现我通常不得不求助于谷歌。仅供参考,如果您想搜索 StackOverflow,我发现使用 google 并指定 site: stackoverflow.com 效果更好。 YMMV。
【讨论】: