2016-09-17 11 views
1

私はチームのリストを持っています。チームはこのように定義されています既存のアイテムをリストの最後までプッシュするにはどうすればよいですか?

public class Team 
{ 
    public int ID { get; set; } 

    public string Name { get; set; } 
} 

私はList<Team>を返しdb.Teams.ToList()でデータベースを照会した後、私は年末に名前「合計」と、そのリストのチームの一つをプッシュする必要がありますリスト。どうすればこれを達成できますか?

+0

最終的にはどういう意味ですか?あなたが次のインデックスを意味するなら、それはそのデフォルトの動作です – Yar

+1

なぜC#側またはデータベース側でリストをソートできないのですか?アイテムを削除してインデックスに基づいてリストに戻すこともできます。また、質問を編集して、現在のリスト内のアイテムの外観を正確に表示することができます。 – MethodMan

+0

@Yarリストの最後まで。私はデータベースからチームのリストを取得します。 "Total"という名前のチームがそのリストの中央にある場合、そのリストの最後にソートしたいと思います。 –

答えて

3

まず、クエリで直接それを行うことができます。

var list = db.Teams.OrderBy(t => t.Name == "Total" ? 1 : 0).ToList(); 

しかし、あなたはリストが移入された後、あなたは、全項目のインデックスを見つけるために、FindIndexメソッドを使用することができ、それをやって主張する場合(もしあれば)、およびそれらRemoveAtAdd方法を使用して最後に項目を移動する:あなたは本当に別をより効率的に、リスト内の他の項目の順序を気にしない場合は、後者の場合には

var list = db.Teams.ToList(); 
int index = list.FindIndex(t => t.Name == "Total"); 
if (index >= 0 && index != list.Count - 1) 
{ 
    var total = list[index]; 
    list.RemoveAt(index); 
    list.Add(total); 
} 

を方法はtになります単に最後の要素と合計を交換してください:

if (index >= 0 && index != list.Count - 1) 
{ 
    var total = list[index]; 
    list[index] = list[list.Count - 1]; 
    list[list.Count - 1] = total; 
} 
+0

LINQ式を試しましたが、動作しませんでした。 –

+0

チームの合計を 'view'に表示したり、別のサービスに渡したいとします。それに続く最良のパターンは、既存の 'List'を照会して新しいオブジェクト' Team'を作成することです。しかし、質問に基づいて結果を達成するには、 'List'がすでに設定されていれば、新しい' Team'オブジェクトを 'Name = Total'で挿入し、レンダリング中に' Name'プロパティで検索を使用して最後にレンダリングします。私が何を意味するのか理解してもらいたいと思います。 –

+0

それはうまくいかなかったという意味ですか?間違いや間違った結果が出ていますか?私はそのような質問がたくさん出ているので、私はかなり驚いています。 –

1

リストを取得して、最後のインデックスに移動してください。リストを注文する必要はありません。あなたのオブジェクトは、このケースで2であると言う:

List<int> list = new List<int> 
{ 
    0, 
    1, 
    2, 
    3, 
    4 
}; 

// get the object o(n) 
int tmp = list.IndexOf(2); 
// remove it 
list.RemoveAt(2); 
// add it to the end of list 
list.Add(tmp); 
1

短い答え:生成したハッシュコード

この@ジョンスキートからの回答を見てください - 私と要件に基づいてhttps://stackoverflow.com/a/8094931/6830901

もっとシンプル理解:

あなたの最初のループ にTeam.Name != "Total"上で検索を行うと、ループが終わった後、用リストでチェックTeam.Name == "Total"

Teamがどこに置かれても問題ありません(共有リストについて考える)。オブジェクトを挿入する場所よりクエリをどのように使用するか

関連する問題