2017-03-06 116 views
0

我有以下代碼,我創建一個IList,我需要通過名爲List的另一個列表中的數據進行過濾。位置列表表示用戶可以根據其權限查看的位置。我是LINQ的新手,並且與我得到的錯誤混淆(C#未知方法「System.Ling.IQueryable」的Where(?))。我嘗試過使用Contains()和Any() 。無濟於事我覺得這是一件很基本的,我不明白這樣做這下面是代碼:。實體框架5 - LINQ語法錯誤

----- users locations 
using System; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 


namespace Decking.Models 
{ 
    public class locations 
    { 
     [Key] 
     public string org_id { get; set; } 
    } 
} 

///////// here is the view model 

using System.ComponentModel.DataAnnotations; 
using System; 

namespace Decking.Models 
{ 

    public class InventoryViewModel 
    {   

     [Key] 
     public int id { get; set; } 
     public DateTime metric_dt { get; set; } 
     public int? item_id { get; set; } 
     public int? loc_type_id { get; set; } 
     public string trlr_nbr { get; set; } 
     public string user_id { get; set; } 
     public string org_id { get; set; } 
     public Double numerator { get; set; }  

     //these are the child entities 
     [UIHint("ClientItem")] 
     public ItemViewModel Items 
     { 
      get; 
      set; 
     } 

     [UIHint("ClientLocTypes")] 
     public LocTypesViewModel LocTypes 
     { 
      get; 
      set; 
     } 

     [UIHint("ClientOrgsByUser")] 
     public OrgsByUserViewModel OrgsByUser 
     { 
      get; 
      set;    
     } 

    } 
} 
///////// code to populate the view model 

public IList<InventoryViewModel> GetAll(List<locations> locs) 
{  
    IList<InventoryViewModel> result = new List<InventoryViewModel>(); 

    result = entities.inventory.Select(inventory => new 
InventoryViewModel 
    { 

     id = inventory.id, 
     metric_dt = inventory.metric_dt, 
     item_id = inventory.item_id, 
     loc_type_id = inventory.loc_type_id, 
     trlr_nbr = inventory.trlr_nbr, 
     org_id = inventory.org_id, 
     numerator = inventory.numerator, 
     user_id = inventory.user_id, 

     Items = new ItemViewModel() 
     { 
      item_id = inventory.items.item_id, 
      item_desc = inventory.items.item_desc, 
     }, 

     LocTypes = new LocTypesViewModel() 
     { 
      loc_type_id = inventory.loc_types.loc_type_id, 
      loc_desc = inventory.loc_types.loc_desc, 
     }, 

     OrgsByUser = new OrgsByUserViewModel() 
     { 
      user_id = inventory.user_id, 
      //mgr_emp_nbr = inventory.mgr, 
      org_id = inventory.org_id, 

     }, 
}).Where(e => e.metric_dt == DateTime.Today && e.org_id 

     ==locs.Any(o=>o.org_id)) // this doesn't work 

//}).Where(e => e.metric_dt == DateTime.Today && e.org_id == "SGF") // 

     this works 
.ToList(); 

    return result; 
} 

Any help you can provide would be greatly appreciated! Thank so much! 
+0

嘗試locs.Any(O => o.org_id!= NULL)) – RandomUs1r

回答

2

的問題是在e.org_id == locs.Any(o=>o.org_id)正如我可以在你工作的例子看,你org_id是string

我猜你正在嘗試做的是.Where(e => e.metric_dt == DateTime.Today && locs.Any(o=>o.org_id == e.org_id))