我在这里遇到了一些技术挑战。
我有一个包含User类型对象的列表。
现在我必须使用linq执行某项操作,其中来自两个不同表的数据必须与用户名和Id的唯一组合匹配。
这种东西(这不是一个正确的实现)
我现在已经停留了很长时间了。
实际上我不能在这里使用aUser.Contains(),因为它必须是原始类型。
有人可以帮我这个吗?
IList<User> aUser = GetUser(); // this is a cached data
class User
{
string Username;
Guid id;
}
data = (from v in _dataContext.UserValues
join i in _dataContext.UserItems
on v.ItemId equals i.Id
where (aUser.Contains(v.Id) && aUser.Contains(i.UserName))
select v);
感谢
答案 0 :(得分:0)
如果您将where子句更改为以下内容,则应该有效...
where (aUser.Select(v => v.id).Contains(v.Id)
&& aUser.Select(v => v.Username).Contains(i.UserName))
顺便说一句,如果你使用方法语法,你可以改进你的Linq,因为你不需要自己加入......
data = _dataContext.UserValues
.Where(v => aUser.Contains(v.Id)
&& aUser.Contains(v.UserItem.UserName))
确切的语法将取决于您的模型的设置方式,因此最后可能需要v.UserItems.UserName,但您应该能够看到如何执行此操作。如您所见,代码更清晰。