2016-10-26 4 views
0

は、私は名前でクエリを注文する必要がある状況があります。例は、クエリは、リストが 1.グリーン 2.グレーのようになります。「ブルー」が含まれていません 3.イエローSelectListItemでクエリを注文するにはどうすればよいですか? <p>クエリはその後、順序が維持されなければならないいくつかの要素が含まれていない場合</p>イエロー 1.グリーン 2.ブルー 3.グレー 4.のような -

私が作ったモデル:このモデル前述の名で

namespace MotorzWeb.ViewModels.Manage 
{ 
    public class UserClassifiedsCategoriesViewModel 
    { 
    public Int64 Id { get; set; } //Row Number 
    public string UserId { get; set; } 
    public string Name { get; set; } 
    public Int64? TotalClassifiedsByCategory { get; set; } 
    } 
} 

名前と呼ばれます。

public static IEnumerable<SelectListItem> OrderedCategoryNames(ResourceManager resourceManager) 
    { 
     return new List<SelectListItem> 
     { 
      new SelectListItem { Text = resourceManager.GetString("Green"), Value = "Green" }, 
      new SelectListItem { Text = resourceManager.GetString("Blue"), Value = "Blue" }, 
      new SelectListItem { Text = resourceManager.GetString("Grey"), Value = "Grey" }, 
      new SelectListItem { Text = resourceManager.GetString("Yellow"), Value = "Yellow" } 
     }; 

    } 

そして、ここで私の部分がある:私はそうのように、私は正しいordringを定義リストを作るべきだと思う

var totalClassified = db.UserClassifiedsCategories 
    .Where(c => c.UserId == userId) 
    .ProjectTo<UserClassifiedsCategoriesViewModel>(mapper.ConfigurationProvider) 
    .ToList(); 

:私のようなクエリを使用したデータベースからデータを取得するために どうしたら分かりません... OrderedCaregoryNameリストでtotalClassifiedクエリを注文するにはどうすればよいですか?誰かがアドバイスや例を挙げることはできますか? ありがとうございました:)

+0

'UserClassifiedsCategoriesViewModel.Name'には色が含まれていますか? –

+0

@FelipeDeguchiはい、色の名前 – Aaron

答えて

1

名前を順番に指定する別のリストを作成し、メソッドでIndexOfメソッドを使用することができます。 OrderByメソッドはキーセレクター関数を受け取り、IndexOfメソッドはリスト内の項目の位置(インデックス)を返します。

var totalClassified = db.UserClassifiedsCategories 
         .Where(c => c.UserId == userId) 
       .ProjectTo<UserClassifiedsCategoriesViewModel>(mapper.ConfigurationProvider) 
       .ToList(); 

var orderList = new List<String> 
{ 
    "Green", 
    "Blue", 
    "Yellow", 
    "Gray" 
}; 

var totalClassifiedOrdered = totalClassified.OrderBy(d => orderList.IndexOf(d.Name)); 

totalClassifiedOrderedUserClassifiedsCategoriesViewModelのコレクションになります。 SelectListItemのリストが必要な場合は、結果を得るためにSelectメソッドを呼び出すことができます。

var optionList = totalClassifiedOrdered 
        .Select(x=>new SelectListItem { Value=x.Name, Name =x.Name}).ToList(); 
+0

ありがとう@シェアー!そうです、私は実際にSelectListItemを使う必要はありませんでした。 – Aaron

関連する問題