2016-07-07 9 views
-1

以下が私のアクションメソッドです.Itはリストの最後のアイテムを返します。私はAListの項目のリストが必要です。リストリターン最後のアイテムのみmvc 4

public ActionResult Ataxi(){ 
     List<sub_employee> AList = new List<sub_employee>(); 
     var alist = IM.getAvailableList().ToList(); 
     foreach(var item in alist) 
     { 
      AList = db.sub_employee.Where(s => s.SE_ID == item).ToList(); 
     } 
     return View(AList); 

    } 

どのようにしてAlistのすべての要素を取得できますか?誰かが私にこの問題の解決を手伝うことができますか?あなたは、リストの値を上書きし続けるあなたの例では

public ActionResult Ataxi(){ 
    var list1 = IM.getAvailableList().ToList(); 
    var list2 = db.sub_employee 
     .Where(x => list1.Contains(x.Id)) 
     .ToList(); 
    return View(list2); 
} 

:私はあなたがこのような何かをしたいと思うあなたに

+0

'foreach'ループの各繰り返しで' AList 'の値を上書きし続けます。あなたは 'Alist.AddRange(....)をしたいですか? –

+0

私はalistとsub_employeeのモデルクラス – Thush234

+0

を交差させるすべての要素を望んでいますあなたのモデルやクエリが返すものを知らないと誰も助けにならないでしょう。私はあなたが '' AList.AddRange(db.sub_employee.Where(s => s.SE_ID == item)) ' –

答えて

0

に感謝します。元のリストの各項目についてWheredb.sub_employeeとチェックします。これは読みにくく、あまり効率的ではありません。実際にはWhereを1回使用するだけで、キーがリストにない値をフィルタリングすることができます。 の中にContainsを使用することはひどく非効率ですが、書き込みが簡単で新しいLINQ演算子を作成する必要はありません。

また、スタイルノートでは、大文字(Alist)でローカル変数名を開始しないようにします。特に、大文字(Alistalist)で異なるローカル変数は避けてください。逆に、大文字(sub_employee)で始まるタイプとプロパティの名前を付けるのが標準です。

+0

とは何ですか?それは存在しません – Thush234

+0

私の問題についてのあなたの説明に本当に感謝します。初心者には基本を学ぶのは素晴らしいことでした。 – Thush234

+0

私が 'Id'を書いたとき、私は' SE_ID'を意味しました。ループ内で 'AddRange'を呼び出す必要はありませんが、LINQを使うことができます。 'var AList = IM.getAvailableList()。Select(item => db.sub_employee.Where(s => s.SE_ID == item));' – JamesFaix

関連する問題