2017-07-16 96 views
-2
[HttpPost] 
    public JsonResult AjaxMethod(string[] departments) 
    { 
     IEnumerable<Batch> batchList = Enumerable.Empty<Batch>(); 
     try 
     { 
      string a; 
      for (int i = 0; i < departments.Length; i++) 
      { 
       a = departments[i]; 
       batchList = batchList.Concat(obj.Batches.Where(x => x.Department_Id == a)); 
      } 
      return Json(batchList); 
     } 
     catch 
     { 
      return Json(null); 
     } 
    } 

我送AjaxMethod()數組有兩個索引部門[0] = 「BSCS」,各部門[1] = 「BSIT」

而且我在使用concat方法追加IEnumerable的名單時,當循環運行的第二次,它會覆蓋部門[0]的結果,它concatinates部門[1]部門[1]

我想這樣的輸出:

bscs-f13
bscs-f14
bscs-f 15
BSIT-F13
BSIT-F14
BSIT-F15

但實際產量爲:

BSIT-F13
BSIT-F14
BSIT-F15
BSIT-F13
bsit- F14
BSIT-F15

如何添加新項的IEnumerable <model>列表而不刪除項目

+0

您正在建立一個對象列表,而不是讀取現有列表。因此,使用'List '和'Add()'而不是'IEnumerable '和'Concat()' – Rhumborl

+0

我試過了,但是它顯示錯誤,無法從iqueryable轉換爲批號 – faraz

回答

2

LINQ的功能是pure如此連接分配每個循環新的內存。您可以簡單地迭代departments參數。

batchList = departments.SelectMany(d=>obj.Batches.Where(x => x.Department_Id == d)); 
+0

它工作!謝謝先生 – faraz