我的代码如下,此代码的用法是将2个列表合并在一起。并将其价值从一个替换为另一个。
(from L1 in List1
join L2 in List2
on L1.itemID equals L2.itemID
select L1.itemName= L2.itemName).ToArray();
上面的代码完美地工作,但仅用于选择itemName的单个属性,如果我想选择多于1个值,我该如何编写代码,
例如
(from L1 in List1
join L2 in List2
on L1.itemID equals L2.itemID
select {L1.itemName= L2.itemName , L1.ItemQuantity = L2.Quatity}).ToArray();
答案 0 :(得分:12)
您可以直接使用属性名称,如下所示。
返回的数组将包含具有相同属性itemID
和itemName
的对象。
var outp = (from L1 in List1
join L2 in List2
on L1.itemID equals L2.itemID
select new { L1.itemID, L2.itemName }).ToArray();
示例输出:
答案 1 :(得分:1)
(from L1 in List1
join L2 in List2
on L1.itemID equals L2.itemID
select new{Prop1 = L1.SomePropery,Prop2 = L1.SomeOtherProperty).ToArray();
或未命名 - 使用默认名称
(from L1 in List1
join L2 in List2
on L1.itemID equals L2.itemID
select new{L1.SomePropery,L1.SomeOtherProperty).ToArray();
答案 2 :(得分:0)
如果要合并这两个对象,则应首先匹配要连接的相应对象,然后浏览匹配的对象并复制属性。不要使用类似的LINQ查询,这不是它的设计目的。
// pair off all the items in both lists
var matches =
from item1 in List1
join item2 in List2 on item1.ItemID equals item2.ItemID
select new { item1, item2 };
foreach (var match in matches)
{
// copy the properties over for each corresponding match
match.item1.ItemName = match.item2.ItemName;
match.item1.ItemQuantity = match.item2.Quantity;
}