可能這個問題有點令人困惑,但基本上我有一個串列,其中包含另一個串列。像這樣:
public class Transaction
{
public string TransactionType { get; set; }
public List<TransactionDetails> Details { get; set; } = new List<TransactionDetails>();
}
public class TransactionDetails
{
public string TransactionDate { get; set; }
public double TransactionAmount { get; set; }
public double TransactionBalance { get; set; }
}
現在,我想根據TransactionDetails串列中的TransactionDate對Transaction串列進行排序。如果假設我只想根據TransactionType對其進行排序,我知道這是這樣做的方法:(假設我已經添加了串列)
List<Transaction> listTransactions;
List<Transaction> sortedListTransactions;
sortedListTransactions = listTransactions
.OrderBy(x => x.TransactionType)
.ToList();
我試過了,這很有效。但是,當我對我的案例應用基本相同的方法時,即基于TransactionDate對串列進行排序時,它并沒有給我所需的答案。請讓我知道是否有任何方法可以實作這一目標..
uj5u.com熱心網友回復:
如果您必須對串列進行排序,則必須選擇一個定義順序的元素(如值、日期等)。如果您喜歡用于排序的屬性也是串列,則必須選擇一個元素從該內部串列(例如 min、max、first、last)或將所有內部串列值(如 sum、average、median、concat)聚合為一個值。
在您的情況下,一種方法可能是在內部串列中找到最小元素,并將其用作對外部元素進行排序的標準。這可能是這樣的:
var sortedTransactions = transactions
.OrderBy(transaction => transaction.Details
.OrderBy(detail => detail.TransactionDate)
.FirstOrDefault())
.ToList();
從您的示例中,從內部串列中對外部元素進行排序的另一種可能性是獲取所有交易金額的總和,如下所示:
var sortedTransactions = transactions
.OrderBy(transaction => transaction.Details
.Sum(detail => detail.TransactionAmount))
.ToList();
盡管如此,您可以定義每個級別的排序標準,然后讓它冒泡以回傳排序標準。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/420913.html
標籤:
上一篇:屬性MS_出現在ApplicationInsights中的屬性名稱中
下一篇:在泛型方法C#中處理可為空的
