userID
这是我目前的尝试:
var request = _otrequestRepository.Include("OTRequestUser");
var search = request.Where(x => userID.Equals(x.OTRequestUser.Select(y => y.UserID)));
但它返回null
答案 0 :(得分:0)
您对search
的查询不正确。
var search = request.Where(x => userId.Equals(x.OTRequestUser.UserId));
试试这个。它会找request
个OTRequestUser.UserId
等于userId
----更新----
如果OTRequestUser
是一个集合Request
,那么我认为以下查询应该有效。
request.Where(x=>x.OTRequestUser.Any(y=>y.UserId == userId))
答案 1 :(得分:0)
试试这个,其中UserId
是你提到的参数
var search = request.Where(x => x.OTRequestUser.any(y=> y.UserId == UserId));
答案 2 :(得分:0)
试试这个:
var searchResult = request.Where(request => request.OTRequestUser
.Any(RequestUser => RequestUser.UserId == paramUserId))
.ToList();
答案 3 :(得分:0)
在我看来,您的表位于数据库中。 Users
和Requests
之间存在一对一的关系:每个User
都有零个或多个Requests
,而每个Request
只属于一个User
{ {1}}。
在数据库中,通常通过向Request
提供User
外键来实现。通常,此外键的名称类似于UserId
。它不在您的表格中,但是您在查询中使用它,我假设每个Request
都有一个外键,其属于User
属于UserId
查询的输入值为userId
,您想要的输出是Requests
的{{1}} User
。userId
。如果此User
没有Id
您想要一个空集合。
int userId = ...
IQueryable<User> users = ...
IQueryable<Request> requests = ...
var result = users // from all users
.Where(user => user.Id == userId) // take the ones with Id equal to userId
.Join(requests, // join the result with requests
user => user.Id, // from every user take Id
request => request.UserId, // from every request taks UserId
(user, request) => new // when they match create a new object
{
// take only the user properties you plan to use
Name = user.Name,
...
// take only the request properties you plan to use:
Title = request.Title,
...
})
.SingleOrDefault();