Поиск по нескольким таблицам одновременно (Linq to SQL)? - PullRequest
3 голосов
/ 12 августа 2010

У меня есть пара таблиц, которые не связаны между собой - я бы хотел просмотреть их обе и создать тип, через который я могу просмотреть позже

что-то подобное не работает

var results = from dog in _dataContext.Dogs  
                      where dog.Name.Contains(search)  

                      from catin _dataContext.Cats  
                      where cat.Name.Contains(search)  

                      select new AnimalSearchResults  
                                  {  
                                      Dog = dog,  
                                      Cat = cat  
                                  };  

        return results;  

Я в основном хочу создать список "AnimalSearchResults", который будет содержать всех собак и всех кошек с таким именем

Каков наилучший способ сделать что-то подобное?

Ответы [ 2 ]

6 голосов
/ 12 августа 2010

Звучит так, как вы хотите Объединить два результата , чтобы ваш базовый запрос был примерно таким:

var results = (from dog in _dataContext.Dogs  
                      where dog.Name.Contains(search))
                      .Union
                      (from cat in _dataContext.Cats  
                      where cat.Name.Contains(search));
3 голосов
/ 12 августа 2010

Другим обходным решением было бы иметь класс Cat и класс Dog , чтобы получить тот же базовый класс, который затем будет иметь имя.

Вот пример


public class Pet
{
    public string Name {get; set;}
}

public class Dog : Pet {...} 
public class Cat : Pet {...}
// I assume each classes have their singularity;

В вашем объекте DataContext создайте метод GetPets (), например:

<code>
public IEnumerable<Pet> GetPets()
{
    return Cats.Cast().Union( Dogs.Cast() );
}

Затем используйте LINQ для Pets в DataContext.

<code>
var results =
    (from p in _dataContext.GetPets()
     where p.Name.Contains(search)
     select p);</p>

<p>

Этот код будет более масштабируемым, особенно если у вас более 2 производных классов.

{наслаждаться}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...