组加入Linq C#
我正在阅读许多网站,以便更好地了解Linq-Group Join组加入Linq C#,c#,linq,C#,Linq,我正在阅读许多网站,以便更好地了解Linq-Group Join var customers = new Customer[] { new Customer{Code = 5, Name = "Sam"}, new Customer{Code = 6, Name = "Dave"}, new Customer{Code = 7, Name = "Julia"}, new Customer{Code = 8, Name = "Sue"} }; // Example
var customers = new Customer[]
{
new Customer{Code = 5, Name = "Sam"},
new Customer{Code = 6, Name = "Dave"},
new Customer{Code = 7, Name = "Julia"},
new Customer{Code = 8, Name = "Sue"}
};
// Example orders.
var orders = new Order[]
{
new Order{KeyCode = 5, Product = "Book"},
new Order{KeyCode = 6, Product = "Game"},
new Order{KeyCode = 7, Product = "Computer"},
new Order{KeyCode = 7, Product = "Mouse"},
new Order{KeyCode = 8, Product = "Shirt"},
new Order{KeyCode = 5, Product = "Underwear"}
};
var query = customers.GroupJoin(orders,
c => c.Code,
o => o.KeyCode,
(c, result) => new Result(c.Name, result));//why mention c here??
// Enumerate results.
foreach (var result in query)
{
Console.WriteLine("{0} bought...", result.Name);
foreach (var item in result.Collection)
{
Console.WriteLine(item.Product);
}
}
我不明白为什么它会给出(c,结果)?如果写为(c,o)怎么办
有人能分享一下这方面的想法吗?这些只是传递给
Func
的参数名称。如果代码更清晰,您可以使用任意名称,即:
var query = customers.GroupJoin(orders,
c => c.Code,
o => o.KeyCode,
(something1, something2) => new Result(something1.Name, something2));
因为它只是将参数从前面的两个Func传递到最后一个Func,即Func
,所以在这种情况下Func
这种情况也一样:
public Result DoStuff(Order nameMeAnyWayYouWant, Customer meToo)
{
//do stuff here
}
问题代码来自:
我正在添加作者跳过的模型类,如果有人想详细说明,以防dotnetperls.com崩溃:
class Customer
{
public int Code { get; set; }
public string Name { get; set; }
}
class Order
{
public int KeyCode { get; set; }
public string Product { get; set; }
}
class Result
{
public string Name { get; set; }
public IEnumerable<Order> Collection { get; set; }
public Result(string name, IEnumerable<Order> collection)
{
this.Name = name;
his.Collection = collection;
}
}
class客户
{
公共整数代码{get;set;}
公共字符串名称{get;set;}
}
阶级秩序
{
公共int键码{get;set;}
公共字符串乘积{get;set;}
}
班级成绩
{
公共字符串名称{get;set;}
公共IEnumerable集合{get;set;}
公共结果(字符串名称,IEnumerable集合)
{
this.Name=Name;
他的收藏=收藏;
}
}
谢谢您的回复。所以你的意思是说var query=customers.GroupJoin(orders,c=>c.Code,o=>o.KeyCode,(c,result)=>newresult(c.Name,result));var query=customers.GroupJoin(orders,c=>c.Code,o=>o.KeyCode,(o,result)=>newresult(o.Name,result));都一样吗?如果是这样,C,O在这里的作用是什么?当然。您可以按自己的方式命名参数。和方法中声明的参数一样,这里只讨论命名。