我有两个类,一个嵌套在另一个,
class Person
{
public string Name;
public string SSN;
public List<Car> CarsOwnedByHim;
}还有另一辆高级轿车
class Car
{
public string RegNo;
public string Make;
public string ModelName;
}在List<Person>中,我想过滤掉所有的汽车,比如ModelName = "Corolla“。
请注意,应返回person实例,但在嵌套列表中,只应筛选出cars。
下面的解决方案是有效的,但我正在寻找一个更优雅的解决方案。
List<Person> lstPersons = new List<Person>();
foreach (var person in _result)
{
List<Car> lstCars = new List<Car>();
foreach (var car in person)
{
if (car.ModelName != "Corolla")
lstCars.Add(car);
}
var tempPerson = person;
tempPerson.CarsOwnedByHim = lstCars;
lstPersons.Add(tempPerson);
}
return lstPersons ;这只是原始problem.TIA的一个修改版本。
发布于 2015-07-09 05:15:53
尝尝这个。您可以通过使用下面的list子句获得一个人的汽车的not equal to corolla
lstCars = person.CarsOwnedByHim.Where(x => x.ModelName.ToUpper() != "COROLLA").ToList();你的整个代码都是这样的
List<Person> lstPersons = new List<Person>();
foreach (var person in _result)
{
List<Car> lstCars = new List<Car>();
lstCars=person.CarsOwnedByHim.Where(x => x.ModelName.ToUpper() != "COROLLA").ToList();
person.CarsOwnedByHim = lstCars;
lstPersons.Add(person);
}
return lstPersons ;发布于 2015-07-09 09:43:30
这里有一个节略的兰巴版本给你:
persons.ForEach(p => p.CarsOwnedByHim.RemoveAll(c => c.ModelName == "Corolla"));发布于 2015-07-09 05:14:38
若要删除一份有花冠的人的名单,并保留原始列表:
var lstPersons = (
from p in _result
select new Person() {
Name = p.Name,
SSN = p.SSN,
CarsOwnedByHim = p.CarsOwnedByHim.Where(t=>t.ModelName != "Corolla").ToList()
}).ToList();如果要编辑原始列表:
foreach (var person in _result)
person.CarsOwnedByHim =
person.CarsOwnedByHim
.Where(t=>t.ModelName != "Corolla")
.ToList()https://stackoverflow.com/questions/31308573
复制相似问题