У меня есть две таблицы 1) Товар 2) Категории
Таблица продукта имеет поле с именем «CategoryID», а таблица «Категория» имеет поле с именем «CategoryName», ID, DateCreated и некоторые другие.
Я хочу использовать LINQ to SQL для запроса всех строк Product, а также просто Category.CategoryName. Этот запрос будет использоваться в источнике данных и будет привязан к ListView.
Я знаю, что могу использовать опцию LoadWith с DataContext и объединением. Но проблема в том, что я получаю все строк из Product и Category. Что я действительно хочу, так это все строки из Product и просто Category.CategoryName
Идеальным решением было бы, если бы опция LoadWith позволила бы вам указать возвращаемые поля, но, поскольку ответил здесь , это невозможно.
Я нашел один способ сделать это, создать собственный класс, который имеет те же самые поля, которые я хочу вернуть. Так например
public class ProductInfo
{
public string ProdName { get; set; }
public int ProdID { get; set; }
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
но проблема в том, что оператор select заканчивается очень долго. например ...
var products = from p in db.Products
join c in db.Categories on p.CategoryID = c.ID
select new ProductInfo { ProdName = p.ProdName, ProdID = p.ID,
CategoryID = p.CategoryID, CategoryName = c.CategoryName }
это становится действительно подверженным ошибкам.
Итак, мой вопрос - есть ли лучший способ сделать это?
Редактировать / Разъяснение:
я должен был упомянуть, что ПРИЧИНА, мне нужен промежуточный класс, заключается в том, что мне нужно иметь возможность возвращать набор результатов как определенный тип, в данном случае ProductInfo