有兩個不同的物件。
UserDto.cs
public Guid GradeId { get; set; }
public bool isActiveUser { get; set; }
用戶.cs
public Guid GradeId { get; set; }
public bool isActiveUser { get; set; }
public Guid ParentUserId { get; set; }
兩個物件都有一些資料,我正在嘗試獲取交集并僅更新資料庫中的那些物件。
var toBeUpdated = userDtos
.Intersect(mapper.Map<List<User>>(users)) //USING AutoMapper here
.ToList();
foreach (var item in toBeUpdated)
{
userRepository.Update(item);
}
這些物件必須與 GradeId 相交。使用我撰寫的代碼,我沒有通過該查詢獲得任何物件。例子 :
用戶:
GradeId - 1 isActive - false
userDtos:
GradId - 1 isActive - true
我希望能夠通過 GradeId 將這兩個集合相交并將 isActive 設定為 true(如在 DTO 中)
uj5u.com熱心網友回復:
有幾種方法可以做到這一點。查找集合交集的最直觀方法是在雙回圈中遍歷兩個集合:
foreach (var dto in userDtos)
{
foreach (var user in users)
{
if (user.GradeId == dto.GradeId)
{
// Do something work here...
userRepository.Update(user);
}
}
}
你也可以使用 Linq 來做同樣的事情:
IEnumerable<User> usersToUpdate =
from dto to userDtos
from user to users
where user.GradeId == dto.GradeId
select user;
foreach (var user in usersToUpdate)
{
// Do something work here...
userRepository.Update(user);
}
或者像這樣:
IEnumerable<User> usersToUpdate = userDtos
.SelectMany(dto => users, (dto, user) => new { dto, user })
.Where(pair => pair.user.GradeId == pair.dto.GradeId)
.Select(pair => pair.user);
foreach (var user in usersToUpdate)
{
// Do something work here...
userRepository.Update(user);
}
uj5u.com熱心網友回復:
無需使用嵌套的 Foreach。
var items = userDtos.Select(x => x.GradeId)
.Intersect(users.Select(y => y.GradeId))
.ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/494048.html
上一篇:嘗試在xamarin上使用HttpWebReaspone時出現System.NullReferenceException
