2017-03-06 21 views
0

リストと呼ばれる別のリストのデータでフィルタリングする必要があるIListを作成する際に、次のコードを使用します。場所リストは、ユーザーがそのアクセス許可に基づいて表示することができる場所を表します。私はLINQに慣れていて、エラーと混同しています(System.Ling.IQueryableのC#Unknownメソッド "Where?")。Contains()とAny()の両方を使用するか、無駄私はここのコードである、それは私がこれを行うことについては理解していないことは非常に基本的な何かのように感じる:。Entity Framework 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(0 => 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))