2016-06-20 23 views
0

私は列、次にRunNo列でソートされたオブジェクトのリスト(RunSummary)を持っています。しかし、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

後に注文する必要があり、クエリ内Convert.ToInt32を使用することはできませんか?あなたは例外を取得していますか?または、あなたが間違った結果を得た場合、それは何ですか? – juharr

+2

@juharr 'DBContext'クエリの中で' int.Parse(param.UniqueId) 'のような関数を使うことはできませんでしたか? –

+0

私は、Convert.ToInt32をLINQクエリでDBに使うことはできないと思うが、何が間違っているのか答えを与える。 – W92

答えて

2

あなたは、あなたが働いていない、特にどのようなクエリ

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

関連する問題