Я использую LINQ и с трудом понимаю, как заставить новые классы "доменной модели" работать в LINQ при выполнении запросов к таблицам. Я использую Linq для SQL и C # в .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». Существует явное преобразование (вам не хватает приведения?)
Я понимаю, что это основная ошибка, но я не могу определить, как BEST реализовать IEnumerable, потому что не могу найти пример.
Должен ли я делать это каждый раз Я хочу специализированный объект? Заранее спасибо.