Linq通过List <T>(System.Collection.Generic.List)对象过滤IQueryable <T>(System.Data.Linq.DataQuery)对象?

Kla*_*rap 5 c# asp.net-mvc list iqueryable linq-to-sql

我的IQueryable系列是:

 // find all timesheets for this period - from db so System.Data.Linq.DataQuery
 var timesheets = _timesheetRepository.FindByPeriod(dte1, dte2);
Run Code Online (Sandbox Code Playgroud)

我的列表行是:

 // get my team from AD - from active directory so System.Collection.Generic.List
 var adUsers = _adUserRepository.GetMyTeam(User.Identity.Name);
Run Code Online (Sandbox Code Playgroud)

我希望仅显示时间表集合中存在于用户集合中的那些用户的时间表.

如果我使用标准的c#表达式,例如:

 var teamsheets = from t in timesheets
                  join user in adUsers on t.User1.username equals user.fullname
                  select t;
Run Code Online (Sandbox Code Playgroud)

我收到错误"不支持返回自引用常量表达式的IQueryable"

有什么建议?

Ste*_*ven 3

连接构造不起作用,但您可以使用该Contains方法。下一个片段可能会起作用。

string[] usernames = adUsers.Select(u => u.fullname).ToArray();

var teamsheets =
    from t in timesheets
    where usernames.Contains(t.User1.username)
    select t;
Run Code Online (Sandbox Code Playgroud)