Я использую LINQ, и мне трудно понять, как я могу заставить новые классы «модели предметной области» работать в LINQ при выполнении запросов между таблицами. Я использую Linq to SQL и С# в .NET 3.5.
Предположим, мне нужен класс расширенного клиента:
public class ExtendedClient
{
public int ID { get; set; }
public string Name { get; set; }
public string strVal { get; set; }
}
и в моем слое данных я хочу заполнить это из двух таблиц (dc - это мой DataContext):
public ExtendedClient getExtendedClient(int clientID)
{
var c = dc.GetTable<tClient>();
var cs = dc.GetTable<tClientSetting>();
var q = from client in c
join setting in cs
on client.ClientID equals setting.ClientID
where client.ClientID == clientID
select new ExtendedClient { client, setting.strValue };
return q;
}
Я пытаюсь вернуть строку в таблице tClient плюс один дополнительный столбец в tClientSetting.
Досадные ошибки, которые я получаю: Не удается инициализировать тип «ExtendedClient» с помощью инициализатора коллекции, поскольку он не реализует «System.Collections.IEnumerable» и не может неявно преобразовать тип «System.Linq.IQueryable» в «ExtendedClient». Существует явное преобразование (вам не хватает приведения?)
Я понимаю, что это основная ошибка, но я не могу определить, как ЛУЧШЕ реализовать IEnumerable, потому что я не могу найти пример.
Должен ли я делать это каждый раз, когда мне нужен специализированный объект? Заранее спасибо.