我有一個List<MyObject>
.
public class MyObject
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateTime { get; set; }
public decimal Value { get; set; }
public decimal ValueToCalculate { get; set; }
}
ValueToCalculate
尚未設定。
如何設定ValueToCalculate
byminimum DateTime
分組依據的值FirstName and LastName
。
我已經嘗試了 GroupBy/MaxBy/SelectMany 的各種版本以及任何沒有成功的版本。
uj5u.com熱心網友回復:
首先進行分組,然后在每個組中找到具有最小日期的物件以從中獲取值,最后用該值更新該組中的物件
var groups = list
.GroupBy(o => (o.FirstName, o.LastName));
foreach (var group in groups) {
decimal value = group
.OrderBy(o => o.DateTime)
.First().Value;
foreach (MyObject item in group) {
item.ValueToCalculate = value;
}
}
我構建了一個以名字和姓氏作為組鍵的元組,以使按兩個屬性進行分組成為可能。
每個組都是一個可列舉的物件,MyObject
我們可以通過列舉來獲取屬于該組的物件。為了獲得最小DateTime
的物件,我按此排序物件DateTime
并獲取第一個從中提取Value
.
一步一步做這些事情通常更容易,而不是為了節省 2 行代碼而嘗試將所有內容合并到一個不可讀的 LINQ 查詢中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527483.html
上一篇:linqfirstordefaultcriterial里面where
下一篇:Java比較器中的復雜邏輯