加入集合并赋值
Joining Collections and Assigning values
我有两个集合,我想根据键属性加入它们并将一个集合的值分配给另一个集合。我正在按照以下方式进行
var joinedData = from collection_one in Office.Employees
join collection_two in NewOffice.Employees
on collection_1.OfficeId equals collection_two.OfficeId
select new { collection_one, collection_two};
// Declare a new Collection
ICollection<Office.Employees> updatedCollection = New List<Office.Employees>();
// Assign New Collection_Two Values to Collection_One
foreach (var item in joinedData.ToList())
{
item.collection_one.Deleted = item.collection_two.Deleted;
updatedCollection .Add(item.obp);
}
这没有产生正确的结果。我的联接生成的记录多于内部联接应有的记录。谁能发现问题?
尝试使用 DefaultIfEmpty() 进行左连接:
var updatedCollection =
(from collection_one in Office.Employees
from collection_two in NewOffice.Employees.Where(x => x.OfficeId == collection_one.OfficeId).DefaultIfEmpty()
where collection_two == null
select new {
collection_one,
collection_two
}).Select(x => {
x.collection_one.Deleted = x.collection_two.Deleted;
return x.obp;
});
但是 x.obp 是什么?也许结果应该是 x.collection_one?
我有两个集合,我想根据键属性加入它们并将一个集合的值分配给另一个集合。我正在按照以下方式进行
var joinedData = from collection_one in Office.Employees
join collection_two in NewOffice.Employees
on collection_1.OfficeId equals collection_two.OfficeId
select new { collection_one, collection_two};
// Declare a new Collection
ICollection<Office.Employees> updatedCollection = New List<Office.Employees>();
// Assign New Collection_Two Values to Collection_One
foreach (var item in joinedData.ToList())
{
item.collection_one.Deleted = item.collection_two.Deleted;
updatedCollection .Add(item.obp);
}
这没有产生正确的结果。我的联接生成的记录多于内部联接应有的记录。谁能发现问题?
尝试使用 DefaultIfEmpty() 进行左连接:
var updatedCollection =
(from collection_one in Office.Employees
from collection_two in NewOffice.Employees.Where(x => x.OfficeId == collection_one.OfficeId).DefaultIfEmpty()
where collection_two == null
select new {
collection_one,
collection_two
}).Select(x => {
x.collection_one.Deleted = x.collection_two.Deleted;
return x.obp;
});
但是 x.obp 是什么?也许结果应该是 x.collection_one?