C# 将对象从最匹配对象排列到最不匹配对象
我正在研究c#中的一个问题。我有一个对象数组和一个关键对象。对象有五个属性:C# 将对象从最匹配对象排列到最不匹配对象,c#,C#,我正在研究c#中的一个问题。我有一个对象数组和一个关键对象。对象有五个属性: 团体 国家 服务 工业 技术 我希望排列对象,以便首先显示与关键对象最匹配的对象。 我想按以下顺序排列这些数据- 它将获得与关键对象组相同组的对象 如果找到相同组的对象,则将根据国家/地区对其进行排序。i、 e.如果发现相同的参数值,则将根据下一个参数确定顺序 对于具有不同组的对象,也将遵循相同的过程 我有一个解决办法: 我用5个参数的每个排列和组合创建了32个linq查询,然后将这32个结果逐一合并。这个解决方案给了
提前谢谢。只需使用
OrderByDescending
+然后使用bydescending
:
var orderedObjects = objects
.OrderByDescending(o => o.Group == keyObj.Group)
.ThenByDescending(o => o.Country == keyObj.Country)
.ThenByDescending(o => o.Service == keyObj.Service)
.ThenByDescending(o => o.Industry == keyObj.Industry)
.ThenByDescending(o => o.Technology == keyObj.Technology)
.ThenBy(o => o.Group) // now start ordering by the properties itself
.ThenBy(o => o.Country)
.ThenBy(o => o.Service)
.ThenBy(o => o.Industry)
.ThenBy(o => o.Technology)
.ToArray();
比较返回
true
或false
,而true
比false
大,因此降序
,因为我们希望首先匹配属性。如何为每个具有不同权重的匹配赋值
一场小组赛可以是100分,一个国家1000分,一次发球10000分
然后按分数对项目进行排序。您能提供任何具有所需输出的样本数据吗?这将帮助我们更好地理解事物。因此,您的LINQ查询类似于
myObjects.OrderBy(o=>o.Group)。然后是by(o=>o.Country)。然后是by(o=>o.Service)。然后是by(…)
?但是您还想更改顺序,所以您在代码中对这个LINQ查询进行了各种排列,因此定义了另一个,但看起来是:myObjects.OrderBy(o=>o.Group)。然后是by(o=>o.Service)。然后是by(o=>o.Technology)。然后是by(…)
?您希望能够定义任意的顺序,而不必重复类似的查询32次以上?