按负载和距离对服务器的分组列表进行排序

时间:2016-09-13 13:59:50

标签: linq

我正在尝试编写一个linq查询来对服务器对象列表进行排序。 服务器的关键属性是Load(百分比0.1等)和DistanceInKm。

e.g server is var server = new Server{Load=0.1,DistanceInKm=200}

服务器可以拥有可空的负载。在这种情况下,分组时我想将可以为空的负载推送到其组的后面。

因此对于第一种情况: 服务器列表(loc表示相同的位置/距离s1表示服务器1,2 ..) Loc1 = 3km,Loc2 = 1km,Lo3 = 2km

  
      
  1. LOC1 S1:加载NULL
  2.   
  3. LOC1 S2:加载0.1
  4.   
  5. LOC2 S1:加载0.7
  6.   
  7. LOC2 S2:加载0.1
  8.   
  9. LOC3 S1:加载0.1
  10.   

结果:

  
      
  1. LOC2 S2:加载0.1
  2.   
  3. LOC3 S1:加载0.1
  4.   
  5. LOC1 S2:加载0.1
  6.   
  7. LOC2 S1:加载0.7
  8.   
  9. LOC1 S1:加载NULL
  10.   

上述逻辑产生了结果。目的是为每个有序负载提供按距离排序的服务器列表。  但是对于以下列表:

  
      
  1. LOC1 S1:加载NULL
  2.   
  3. LOC1 S2:加载0.1
  4.   
  5. LOC1 S3:加载0.6
  6.   
  7. LOC1 S4:加载0.2
  8.   
  9. LOC2 S1:加载0.7
  10.   
  11. LOC2 S2:加载0.1
  12.   
  13. LOC2 S3:加载0.2
  14.   
  15. LOC3 S1:加载0.1
  16.   

但结果给出了:

  
      
  1. LOC2 S2:加载0.1      
        
    1. LOC3 S1:加载0.1
    2.   
    3. LOC1 S2:加载0.1
    4.   
    5. LOC2 S3:加载0.2
    6.   
    7. LOC1 S4:加载0.2
    8.   
    9. LOC1 S3:负载0.6 - > 这是不正确的。因为它应该是loc2 s1负载0.7,因为它距离更近
    10.   
  2.   

也许我没有正确解释这个问题。我在伪代码中想到了这样的事情:

虽然(重复是真的) 对于每个组   取第一项(使用跳过(计数)并取(1) 增量计数

对每个组重复,然后取n + 1项。重复直到 在所有组中不再有任何项目要迭代。这应该产生 按顺序从组中的项目。由于这些组按顺序按距离分组,并且项目本身按负载顺序通过遍历每个组第一,第二......等应按距离和负载生成有序的平面列表

0 个答案:

没有答案
相关问题