C# 在另一个查询中使用一个查询值
当我执行时,我在C# 在另一个查询中使用一个查询值,c#,visual-studio-2010,linq,C#,Visual Studio 2010,Linq,当我执行时,我在IDquery中得到一个值数组,我想在mainquery的where条件中使用这些值,如上所示,但当我这样给出时,它会在mainquery的where条件中显示错误。您能告诉我如何使用从mainquery中的IDquery检索的值数组吗?您写道: // To get current user id var currentUsrId = Convert.ToInt16(Membership.GetUser().ProviderUserKey); var IDquery = My
IDquery
中得到一个值数组,我想在mainquery的where条件中使用这些值,如上所示,但当我这样给出时,它会在mainquery的where条件中显示错误。您能告诉我如何使用从mainquery
中的IDquery
检索的值数组吗?您写道:
// To get current user id
var currentUsrId = Convert.ToInt16(Membership.GetUser().ProviderUserKey);
var IDquery = My_usr_contacts_requests.Where(i => i.requests_to_usr_id == currentUsrId)
.Select(i => new { i.from_usr_id })
.ToArray();
var mainquery = My_usr_biographic_details
.Join(
My_usr_profiles_companies, i => i.usr_id, j => j.company_usr_id,
(i, j) => new
{
usr_id = j.company_usr_id,
})
.Where(i =>IDquery.contains(i.usr_id))
.ToArray();
最后一个新的是不必要的。它创建一个数组。您需要将其更改为:
var IDquery = dbContext.My_usr_contacts_requests.Where(i =>
i.Usr_contacts_requests_to_usr_id==currentUsrId).Select(i => new {
i.Usr_contacts_requests_from_usr_id }).ToArray();
错误是什么?您只使用Contains,所以应该可以。(可能是因为写了“contains”而出现语法错误)不,实际上,IDquery是数组类型,所以当我在主查询的where子句中使用contains时,IDquery是数组类型,而i.profiles\u company\u usr\u id是int类型,所以它显示错误
var IDquery = dbContext.My_usr_contacts_requests.Where(i =>
i.Usr_contacts_requests_to_usr_id==currentUsrId).Select(i =>
i.Usr_contacts_requests_from_usr_id).ToArray();