2017-09-13 94 views
0

這是我的代碼:計劃犯規進入foreach循環

private List<Picture> items; 

public List<Picture> Items 
{ 
    get 
    { 
     if (items == null) 
     { 
      items = new List<Picture>(); 
      items = this.LoadAllItems(); 
     } 

     return items; 
    } 

    set 
    { 
     this.items = value; 
    } 
} 

public List<Picture> GetItemsBySearch(string searchTerm, string fieldName) 
{ 
    DataAccess dbcontext = new DataAccess(); 
    string internalfield = dbcontext.GetInternalFieldNameByDisplayName(fieldName); 
    List<Picture> PictureHits = new List<Picture>(); 

    var data = from Picture item in this.Items 
       where item.GetType().GetProperty(internalfield).GetValue(item, null).ToString().Contains(searchTerm) 
       select item; 

    foreach (Picture item in data) 
    { 
     PictureHits.Add(item); 
    } 

    return PictureHits; 
} 

data.Count包含88項,但它並沒有進入foreach循環。

varforeach循環中不起作用嗎?

Picture是一個像filenameID一些對象類等

​​

這是 「數據」 包含使其包含88項犯規呢?

+0

有什麼錯誤?你有調試嗎?把一個try..catch將幫助你很多 – Se0ng11

+0

你的代碼示例甚至不會編譯 – tym32167

+2

'從這個圖片項目this.Items'?應該是'from this item.Items' – Rahul

回答

2

問題可能是在條件

var data = from Picture item in this.Items 
       where item.GetType().GetProperty(internalfield) // threre 
        .GetValue(item, null).ToString().Contains(searchTerm) // might bean issue 
       select item; 

試評,並攝製。如果foreach可以工作,那麼你有標準可以過濾所有的數據。