C# 如何在相同的权重下按多个参数排序?

C# 如何在相同的权重下按多个参数排序?,c#,C#,我正在尝试制作一个程序,通过不止一个参数对对象进行排序。 我需要order by对所有参数具有相同的权重。为了得到这个结果,我需要使用什么函数 我尝试使用OrderBy()然后-ThenBy(),但它首先对第一个参数进行排序,因此排序的权重不相等 values = File.ReadAllLines(filepath) .Skip(1) .Select(v => Fund.FromCsv(v)) .Orde

我正在尝试制作一个程序,通过不止一个参数对对象进行排序。 我需要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基金=新列表();
添加(新基金(){Age=18,Money=100000});
添加(新基金(){Age=20,Money=101000});
//这里通常是您从CSV加载的代码
//File.ReadAllLines(文件路径)
//.Skip(1)
//.Select(v=>Fund.FromCsv(v))
var值=基金.OrderBy(t=>t.SortingFactor);
}
公营基金
{
公共整数{get;set;}
公共十进制货币{get;set;}
公共十进制排序因子
{
得到
{
//这是您必须首先整理的域算法(示例数据为)
归还金钱/年龄;
}
}
}

我不确定我是否完全理解您的目的,但如果基金不是代码,您可以修改的另一种选择是您订单中的匿名对象,例如

values = File.ReadAllLines(filepath)
              .Skip(1)
              .Select(v => Fund.FromCsv(v))
              .OrderByDescending(x => new { x.sharp, x.yearlychange })
              .ToList();

你必须给出一个例子和期望的结果。编辑,现在清楚了吗?不,恐怕不清楚。假设有两个参数“字母”和“数字”以及四个对象A1、B2、B1、A2。您可以按字母顺序订购,然后是A1号;A2;B1;B2或您可以先按数字再按字母A1订购;B1;A2;B2。我看不出“等权重”会有什么作用?在你的例子中是这样的:我想是A1 A2 B1 B2。但是对于字母来说,它有点复杂。我想我有更多的例子给你。假设我们有一份人民名单。我们想知道,在这个年龄段,谁的财务状况最好。这样一来,18岁但有10万美元的人将以10.1万美元排在20岁之前。现在明白了吗?您必须定义一个计算“最佳”收益率和标准偏差的函数。否则,无法知道(仅通过排序)5%的收益率和2%的SD比4.5%的收益率和1%的SD好还是坏
values = File.ReadAllLines(filepath)
              .Skip(1)
              .Select(v => Fund.FromCsv(v))
              .OrderByDescending(x => new { x.sharp, x.yearlychange })
              .ToList();