【发布时间】:2012-07-03 15:10:59
【问题描述】:
我有一些 linq 查询的方法。接下来是逻辑,如果我为角色 id 列表传递 null,我希望所有角色都包含在进程中,但如果它有值,我只想要列表中具有 id 的角色。我收到了例外。
public static List<NameEmail> GetNameEmailPairs(Guid guid, List<int> recipientRoles)
{
using (var tc = TransactionContext())
{
var dc = tc.DataContext;
var nameEmailPairs = (
from email in dc.Emails
join logon in dc.Logons on email.GUID equals logon.GUID
join eLogon in dc.ELogons on logon.UID equals eLogon.LogonGUID
join role in dc.Roles on entityLogon.PrimaryPermissionRoleID equals role.RoleID
where
(recipientRoles == null || recipientRoles.Contains(role.RoleID))
select new NameEmail
{
Email = email.EmailAddress,
FullName = GetName(logon.GUID)
}
)
.ToList();
return nameEmailPairs;
}
}
这部分正在破坏(recipientRoles == null || recipientRoles.Contains(role.RoleID))。你能帮我解决这个问题吗,我该怎么办?
【问题讨论】:
-
你到底收到了什么异常?
-
System.ArgumentNullException:值不能为空。参数名称:source at System.Linq.Enumerable.OfType[TResult](IEnumerable source)
-
当“recipientRoles”参数为空时出现此异常。
标签: c# .net linq linq-to-sql generic-list