C# 如何将此linqTOsql查询转换为lambda
这对我来说更像是一个脑筋急转弯,因为linqTOsql查询满足了这一需求。我只是好奇这样的一个查询是如何转换成lambda的,或者这是否可能 我最初尝试使用lambdas来实现这一点,但我能找到的唯一方法是使用查询语法来完成连接,以便正确排序结果:C# 如何将此linqTOsql查询转换为lambda,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,这对我来说更像是一个脑筋急转弯,因为linqTOsql查询满足了这一需求。我只是好奇这样的一个查询是如何转换成lambda的,或者这是否可能 我最初尝试使用lambdas来实现这一点,但我能找到的唯一方法是使用查询语法来完成连接,以便正确排序结果: var entries = from e2c in entry2CatsTable join sEntries in streamEntryTable
var entries = from e2c in entry2CatsTable
join sEntries in streamEntryTable
on e2c.streamEntryID equals sEntries.seID
orderby sEntries.seDateCreated descending
orderby e2c.e2cOrder
where e2c.catID == catID
select sEntries;
我用lambdas玩过这个,这就是我取得的成绩:
IQueryable<Entry2Cats> e2c = entry2CatsTable
.Where(x => x.catID == catID)
.OrderBy(x => x.e2cOrder);
IQueryable<StreamEntry> entries = e2c.SelectMany(x => x.StreamEntry);
有什么想法吗
注:
此外,由于控制器添加了分页功能,结果需要以
IQueryable
的形式返回。注意:如果下载LINQPad,则可以加载并配置它以使用linq到sql连接和对象,并插入查询表达式语法。您将能够运行它并查看lambda版本、生成的SQL、IL和结果(如适用)。哇。通常我更喜欢lambda代码。。。但是在这种情况下,我认为查询更容易阅读lol。谢谢你的解决方案。那种.Join()
语法有点让人难以理解。但我插上了电源,它是正确的。
var entries = entry2CatsTable
.Join(streamEntryTable, e2c => e2c.streamEntryID, sEntries => sEntries.seID, (e2c, sEntries) => new { e2c, sEntries })
.Where(item => item.e2c.catID == catID)
.OrderByDescending(item => item.sEntries.seDateCreated)
.ThenBy(item => item.e2c.e2cOrder)
.Select(item => item.sEntries);
var entries = entry2CatsTable
.Join(streamEntryTable, e2c => e2c.streamEntryID, sEntries => sEntries.seID, (e2c, sEntries) => new { e2c, sEntries })
.Where(item => item.e2c.catID == catID)
.OrderByDescending(item => item.sEntries.seDateCreated)
.ThenBy(item => item.e2c.e2cOrder)
.Select(item => item.sEntries);