我試圖更新在C#中,看起來像這樣使用Linq更新嵌套列表值?
名單<Users
>
嵌套列表 - 用戶類型
- 列表<UserComponents
>
- - UserComponentKey
- - 計數
這裏有一個書面例如:
用戶列表: UserType = 1
UserComponents
- UserComponentKey = XYZ
- 計數= 3
用戶類型= 2個
UserComponents
- UserComponentKey = XYZ
- 計數= 7
我需要更新UserComponentKey XYZ的用戶類型2只,目前我更新已中斷,並更新所有用戶類型的XYZ。這是我當前的方法,它不工作,因爲它們更新包含指定組件密鑰的所有usertype的UserComponent計數值,而不是我所針對的特定usertype。
CLASSES:
public class Users
{
public string UserType { get; set; }
public List<UserComponent> UserComponents { get; set; }
}
public class UserComponent
{
public string UserComponentKey { get; set; }
public int Count { get; set; }
}
方法1:
Users.Where(us => us.UserType == "2")
.First().UserComponents
.Where(uc => uc.UserComponentKey == "XYZ")
.First().Count = value;
方法2:
if(users.UserType == "2")
{
foreach(var component in users.UserComponents)
{
switch(component.UserComponentKey)
{
case "XYZ":
component.Count = value;
break;
}
}
}
碼生成LIST(類似): 列表UserComponents =新列表();
if (Item.UserAddOn != null)
{
for (var i = 0; i < Item.UserAddOn.First().Count; i++)
{
UserComponents.Add(new UserComponent
{
UserComponentKey = Item.UserAddOn[i].ComponentKey,
Count = 0
});
}
}
if (Item.User != null)
{
for (var i = 0; i < Item.User.First().Count; i++)
{
Users.Add(new User()
{
UserType = Item.User[i].ComponentKey,
Count = 0,
UsersComponents = UserComponents
});
}
}
我已經刪除了實際值等,但希望有人能指出我在這裏正確的方向。
謝謝!
你的代碼是不安全的,但它應該工作。問題是什麼? – Pluc
它們當前更新包含指定組件密鑰的所有usertype的UserComponent計數值,而不是我指定的特定usertype。 – Dan
所以,如果我有4個usertypes,所有與組件鍵「J32S」所有四個將使用這些方法更新。 – Dan