[英]how to Order a DataTable By more than one condition using AsEnumerable().OrderBy?
[英]How to orderby more then one parameter in the same weight?
我試圖制作一個按多個參數對對象進行排序的程序。 我需要 order by 對所有參數具有相同的權重。 我需要使用哪些功能才能獲得該結果?
我嘗試使用OrderBy()
然后 - ThenBy()
但它首先對第一個參數進行排序,因此排序不相等。
values = File.ReadAllLines(filepath)
.Skip(1)
.Select(v => Fund.FromCsv(v))
.OrderByDescending(x => x.sharp)
.ThenBy(x=>x.yearlychange)
.ToList();
例如,您可以以股票市場為例,在這種情況下,我想按去年的收益率排序股票,但也按標准差排序。 通過這種方式,我可以獲得去年收益率最高但標准差也最好的股票。 它不會是所有產品中最好的,它會被合並。
正如您已經了解的那樣,這並不是一個真正的程序問題,更像是算法/領域問題。 不過,如果您已經擁有該算法,那么您當然可以這樣做。 (基於您在評論中提供的示例)
void Main()
{
var funds = new List<Fund>();
funds.Add(new Fund() { Age = 18, Money = 100000 });
funds.Add(new Fund() { Age = 20, Money = 101000 });
//Here is normally your code with loading it from CSV
//File.ReadAllLines(filepath)
// .Skip(1)
// .Select(v => Fund.FromCsv(v))
var value = funds.OrderBy(t => t.SortingFactor);
}
public class Fund
{
public int Age { get; set; }
public decimal Money { get; set; }
public decimal SortingFactor
{
get
{
//Here is your domain algorithm you must sort out first (your example data would be)
return Money / Age;
}
}
}
我不確定我是否完全理解您的目標,但如果資金不是您可以修改的代碼,另一種選擇是您的訂單中的匿名 object,例如
values = File.ReadAllLines(filepath)
.Skip(1)
.Select(v => Fund.FromCsv(v))
.OrderByDescending(x => new { x.sharp, x.yearlychange })
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.