我有一个数据结构如下:我有一个对象列表,其中包含我想要搜索的属性,然后当我找到所有匹配我的搜索查询的对象时,我想更新所有找到的对象的另一个属性。以下是对象属性的示例:
Name: Sean Aston
City: Toronto
Eye Color: Blue
Warnings: 4
Name: Cole Anderson
City: New York City
Eye Color: Black
Warnings: 1
Name: Polly Smith
City: Toronto
Eye Color: Blue
Warnings: 3
我的搜索woluld将选择列表中属性眼睛颜色为蓝色且城市为多伦多的所有对象。它应该返回对象一和三。然后我应该能够更新第一个和第三个对象的warnings属性以增加1。
我怎样才能做到这一点? 提前谢谢。
答案 0 :(得分:5)
要符合您的确切要求,请执行以下操作:
foreach (var item in MyObjectList.Where(o => o.EyeColor == "Blue" && o.City == "Toronto"))
{
item.Warnings ++;
}
但我怀疑标准完全由用户决定,所以你不知道你在编译时想要的是什么。在那种情况下:
var search = (IEnumerable<MyObject>)MyObjectList;
if (!string.IsNullOrEmpty(txtCity.Text))
{
search = search.Where(o => o.City == txtCity.Text);
}
if (!string.IsNullOrEmpty(txtEyeColor.Text))
{
search = search.Where(o => o.EyeColor == txtEyeColor.Text);
}
// similar checks for name or warning level could go here
foreach(var item in search) {item.Warnings++;}
答案 1 :(得分:4)
这个怎么样
People.Where(p => p.EyeColor == "blue" && p.City == "Toronto")
.ToList().ForEach(p => p.Warnings++);
答案 2 :(得分:1)
假设您有IEnumerable<YourType>
(数组,列表等),您将执行此操作:
var filtered = yourlist.Where(o => o.EyeColor == "Blue" && o.City =="Toronto")
foreach(item in filtered)
{
item.Warnings++;
}