2014-08-30 24 views
-3

如何在此查询中使用名为ListOfAuditors的列表中的值替换硬编码数组new int [] {102,7,39}?我如何用C#列表替换LINQ查询中的硬编码值

public IList<UserDetails> GetAllAssociatesForGivenListOfAuditors(IList<UserDetails> ListOfAuditors) 
     { 
      using (OPMSDataSourceDataContext db = new OPMSDataSourceDataContext()) 
      { 
       var query = (from AuditorAssociatemaps in db.AuditorAssociatemaps 
          where 
           (new int[] { 102, 7, 39 }).Contains(AuditorAssociatemaps.AuditorID) 
          group new { AuditorAssociatemaps.UserData, AuditorAssociatemaps } by new 
          { 
           AuditorAssociatemaps.UserData.FirstName, 
           AuditorAssociatemaps.AssociateID 
          } into g 
          orderby 
           g.Key.FirstName 
          select new UserDetails 
          { 
           FirstName = g.Key.FirstName, 
           UserID = g.Key.AssociateID 
          }).ToList(); 
       return query; 
      } 
     } 
+0

您可以在列表[这里]找到该项目[1] [1]:http://stackoverflow.com/questions/15281311/find-item-in-ilist-with-linq – nshah 2014-08-30 16:39:53

+1

就像你会从字面上看到的那样,你选择文本'new int [] {102,7,39}'并将文本'ListOfAuditors'粘贴在它上面。 – 2014-08-30 16:40:10

+0

你可以找到[这里]列表中的项目[1] 此外,有关[这个例子] [2] [2]:http://stackoverflow.com/questions/9869908/how- to-use-ilist-contain-method-to-find-an-object – nshah 2014-08-30 16:41:58

回答

2

你可以尝试这样的事情:

...  
var ids = ListOfAuditors.Select(a => a.Id) 
... 

,并在查询:

where ids.Contains(AuditorAssociatemaps.AuditorID)