Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在join LINQ中使用多个条件。i、 e和_C#_Asp.net Mvc_Linq_Entity Framework 6_Repository Pattern - Fatal编程技术网

C# 在join LINQ中使用多个条件。i、 e和

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=

如何在LINQ联接中使用多个条件,即在我的场景中,我需要从表User(其中组ID=4)中从表UserInGroup获取所有用户,其中UserInGroup是用户和组表之间的中间表,如在SQL-T中,我们使用联接作为

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();