2016-06-20 93 views
0

我有一个按UniqueId列排序的对象列表(RunSummary),然后列出RunNo列。但是UniquId对象的类型为String。我想按UniqueId排序为Integer对象(不是1,10,11,3而是1,3,10,11)。这里是我的代码:在LINQ C中对字符串列表进行整数排序#

public List<RunSummary> GetRunSummariesForUniqueIds(List<String> uniqueIds) 
{ 
    using (var context = new ELSORegistryEntities()) 
    { 
     context.Configuration.ProxyCreationEnabled = false; 

     List<RunSummary> runSummaries = context.RunSummaries 
      .Where(param => uniqueIds.Contains(param.UniqueId)) 
      .OrderBy(param => param.UniqueId) 
      .ThenBy(param => param.RunNo) 
      .ToList<RunSummary>);    

     return runSummaries; 
    } 
}   

我与

List<RunSummary> runSummaries = context.RunSummaries 
    .Where(param => uniqueIds.Contains(param.UniqueId)) 
    .OrderBy(param => Convert.ToInt32(param.UniqueId)) 
    .ThenBy(param => param.RunNo) 
    .ToList<RunSummary>(); 

尝试,但它不工作。我如何在LINQ中排序?

+2

什么特别不工作后订购?你是否遇到异常?或者如果你得到不正确的结果他们是什么? – juharr

+2

@juharr我不认为你可以在'DBContext'查询中使用'int.Parse(param.UniqueId)'这样的函数吗? –

+0

我想,你不能在LINQ查询中使用Convert.ToInt32到数据库,但给我们一个答案有什么问题.. – W92

回答

2

不能使用Convert.ToInt32的查询中,你应该查询

List<RunSummary> runSummaries = context.RunSummaries.Where(param => uniqueIds. 
Contains(param.UniqueId)).ToList<RunSummary>() 
.OrderBy(param => Convert.ToInt32(param.UniqueId)) 
.ThenBy(param => param.RunNo).ToList(); 
+0

谢谢。不幸的是,我得到了一个FormatException:“输入字符串的格式不正确。” – alenan2013

相关问题