有谁知道怎么写这个
var q = from c in customers
join o in orders on c.Key equals o.Key
select new {c.Name, o.OrderNumber};
在这种语法风格中?
var 1= customers.
.join(???)
.select(???)
我一直在谷歌搜索一种方法,现在运气好了几天。每个人都喜欢教程的第一个语法,但我发现第二个更容易确定阅读时的操作顺序。
答案 0 :(得分:3)
编译器转换过程涉及使用“透明标识符”,使当前客户和订单可用于Select方法。您可以通过制作自己的:
来模仿customers.Join(orders, c => c.Key, o => o.Key, (c, o) => new { c, o })
.Select(x => new { x.c.Name, x.o.OrderNumber });
相反,您可以将Name / OrderNumber投影移动到Join调用中:
customers.Join(orders, c => c.Key, o => o.Key, (c, o) => new { c.Name, o.OrderNumber });
答案 1 :(得分:2)
这只需拨打一次Enumerable.Join:
var q = customers.Join(
orders,
c => c.Key,
o => o.Key,
(c, o) => new {c.Name, o.OrderNumber}
);
答案 2 :(得分:2)
您也可以查看LinqPad。它有一个用于屏幕下半部分的小lambda按钮,它将linq查询转换为链式方法:
from p in PropertyListings
from rl in p.ResidentialListings
select new {p.YearBuilt,p.ListingUrl}
被翻译成:
PropertyListings
.SelectMany (
p => p.ResidentialListings,
(p, rl) =>
new
{
YearBuilt = p.YearBuilt,
ListingUrl = p.ListingUrl
}
)