Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将对象从最匹配对象排列到最不匹配对象_C# - Fatal编程技术网

C# 将对象从最匹配对象排列到最不匹配对象

C# 将对象从最匹配对象排列到最不匹配对象,c#,C#,我正在研究c#中的一个问题。我有一个对象数组和一个关键对象。对象有五个属性: 团体 国家 服务 工业 技术 我希望排列对象,以便首先显示与关键对象最匹配的对象。 我想按以下顺序排列这些数据- 它将获得与关键对象组相同组的对象 如果找到相同组的对象,则将根据国家/地区对其进行排序。i、 e.如果发现相同的参数值,则将根据下一个参数确定顺序 对于具有不同组的对象,也将遵循相同的过程 我有一个解决办法: 我用5个参数的每个排列和组合创建了32个linq查询,然后将这32个结果逐一合并。这个解决方案给了

我正在研究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次以上?