C# 在join LINQ中使用多个条件。i、 e和
如何在LINQ联接中使用多个条件,即在我的场景中,我需要从表User(其中组ID=4)中从表UserInGroup获取所有用户,其中UserInGroup是用户和组表之间的中间表,如在SQL-T中,我们使用联接作为C# 在join LINQ中使用多个条件。i、 e和,c#,asp.net-mvc,linq,entity-framework-6,repository-pattern,C#,Asp.net Mvc,Linq,Entity Framework 6,Repository Pattern,如何在LINQ联接中使用多个条件,即在我的场景中,我需要从表User(其中组ID=4)中从表UserInGroup获取所有用户,其中UserInGroup是用户和组表之间的中间表,如在SQL-T中,我们使用联接作为 select * from user where user.userID = userIngroup.userID AND userIngroup.groupID == 4 .... 在另一种方法中,我使用lambda表达式和LINQ,如何在下面的一种方法中应用groupID=
select *
from user
where user.userID = userIngroup.userID AND userIngroup.groupID == 4
....
在另一种方法中,我使用lambda表达式和LINQ,如何在下面的一种方法中应用groupID=4
public IEnumerable<User> GetUsersByGroupID(int _groupID)
{
List<User> _listedUsersByGroupID = new List<User>();
using(var _uow = new UserManagement_UnitOfWork())
{
_listedUsersByGroupID = (from _users in _uow.User_Repository.GetAll()
.Include(s=>s.UserInGroup.Select(r=>r.Group))
select _users).ToList();
return _listedUsersByGroupID;
}
}
群模型
公共类组
{
公共组(){}
[关键]
public int GroupID{get;set;}
[长度(250)]
[必需]
公共字符串组名{get;set;}
公共ICollection UserInGroup{get;set;}
}
Lambda查询看起来像:
ctx.User.Where(user=>
ctx.UserInGroup.Any(userIngroup=>
user.userID == userIngroup.userID && userIngroup.groupID == 4
)
)
不过,这只是一个查询,如果您想获得结果,请在末尾添加.AsList()或.AsEnumerable()
然而,如果您不完全理解您正在做的事情,您可能会编写愚蠢而低效的代码。我建议你试试这个:
var publications = ctx.Database.SqlQuery<UserResults>(String.Format(@"
select UserID, FirstName,LastName,Age,EmailAddress,UserInGroup
from user
where user.userID = userIngroup.userID AND userIngroup.groupID == {0}
order by UserID
", Config.Group));
您只需添加一个条件即可筛选属于组4的用户。试试这个:
_listedUsersByGroupID = (from _user in _uow.User_Repository.GetAll()
.Include(s=>s.UserInGroup.Select(r=>r.Group))
where user.UserInGroup.Any(ug=>ug.groupID==4)
select _user).ToList();
ctx.User.Where(user=>
ctx.UserInGroup.Any(userIngroup=>
user.userID == userIngroup.userID && userIngroup.groupID == 4
)
)
var publications = ctx.Database.SqlQuery<UserResults>(String.Format(@"
select UserID, FirstName,LastName,Age,EmailAddress,UserInGroup
from user
where user.userID = userIngroup.userID AND userIngroup.groupID == {0}
order by UserID
", Config.Group));
using (var ctx = new toxicEntities())
{
}
_listedUsersByGroupID = (from _user in _uow.User_Repository.GetAll()
.Include(s=>s.UserInGroup.Select(r=>r.Group))
where user.UserInGroup.Any(ug=>ug.groupID==4)
select _user).ToList();