Sonny K
Sonny K

Reputation: 704

Joing multiple Linq Clauses

I have two Linq queries that work:

     List<UserModel> userslist2 = 
     (from USZipCode in _db.USZipCodes                     
     where SqlFunctions.SquareRoot(.....) <= 25
     join User in _db.Users on USZipCode.ZipCode equals User.ZipCode
     select User).Take(10000).ToList();
    var x = (from user in userslist2
             where (user.Ethnicity == Ethnicity) &&
             (user.Sex == Gender) &&
             (user.HasProfilePhoto == HasProfilePic) 
            select new SearchResultsViewModel
            {
              _userid = user.UserID,
              _username = user.UserName,                                  
              _sex = user.Sex,
              _city = user.City,
              _state = user.State,
            }).Take(800).ToList();

I want to combine the two clauses and I came up with the following, but it is giving errors (won't compile):

var x = (from user in 
        (from USZipCode in _db.USZipCodes                     
         where SqlFunctions.SquareRoot(.....) <= 25
         join User in _db.Users on USZipCode.ZipCode equals User.ZipCode
         select User).Take(10000).ToList().Where( user.Ethnicity == Ethnicity &&
                                                  user.Sex == Gender &&
                                                  user.HasProfilePhoto == HasProfilePic) 
        select new SearchResultsViewModel
        {
          _userid = user.UserID,
          _username = user.UserName,                                  
          _sex = user.Sex,
          _city = user.City,
          _state = user.State,
        }).Take(800).ToList();

Upvotes: 0

Views: 52

Answers (1)

V0ldek
V0ldek

Reputation: 10583

This question is not well asked, but to combine two LINQ queries you can... well, combine two LINQ queries:

var userslistQuery = 
     (from USZipCode in _db.USZipCodes                     
     where SqlFunctions.SquareRoot(.....) <= 25
     join User in _db.Users on USZipCode.ZipCode equals User.ZipCode
     select User).Take(10000);

var x = (from user in userslistQuery 
             where (user.Ethnicity == Ethnicity) &&
             (user.Sex == Gender) &&
             (user.HasProfilePhoto == HasProfilePic) 
            select new SearchResultsViewModel
            {
              _userid = user.UserID,
              _username = user.UserName,                                  
              _sex = user.Sex,
              _city = user.City,
              _state = user.State,
            }).Take(800).ToList();

Just use the query, not the resultant List.

Upvotes: 1

Related Questions