![](/img/trans.png)
[英]Best way to use LINQ to Entities with a Collection Property
[英]Best way to assign a value to a property of all objects in a collection using LINQ
我有一個帶有ResaleValue
屬性的Car
對象,我將這些car對象的集合存儲在:
IEnumerable<Car>
我還有一個帶有計算方法的ResaleCalculator()。
在linq中有沒有辦法應用計算並在沒有循環的情況下設置集合中每個對象的ResaleValue
屬性?
你真的不想使用LINQ。 首先,你沒有避免循環,你只是將它抽象出來。 其次,LINQ方法旨在過濾和/或投射序列,而不是使其變異。 雖然你可以使用List<T>
上的.ForEach
實例方法來不顯式地編寫循環,但是簡單地編寫循環來完成你需要它做的事情並不是很清楚。
我想這會做你想要的
cars.Select(c=>c.ResaleValue = c.Calculate());
您無法修改IEnumerable<T>
而無需將這些值設置為ResaleValue
屬性並復制現有屬性,從而無法投影到新的IEnumerable中。 理想情況下,當你第一次獲得IEnumerable<Car>
時,你會這樣做。
IEnumerable<Car> cars = // however you set cars originally
cars = cars.Select(c => new Car
{
Prop1 = c.Prop1,
Prop2 = c.Prop2,
ResaleValue = ResaleCalculator(params)
});
顯然這並不理想。 另一方面,您可以ToList()
您的集合並使用ForEach
方法或常規foreach
循環:
var list = cars.ToList()
.ForEach(c => c.ResaleValue = ResaleCalculator(c.SomeNeededParam));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.