2017-09-13 62 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可以工作,那么你有标准可以过滤所有的数据。