Получить меньше полей таблицы, используя лямбда-выражения Linq To Sql - PullRequest
0 голосов
/ 20 июля 2010

Я хотел бы знать, как получить подмножество данных из таблицы, используя лямбда-выражения Linq To SQl ...

Допустим, у меня есть таблица tbl_Product с полями ProductId, ProductCode, ProductName, Description, WhyBuyCopy, как мне получить только первые три поля, когда другие не нужны, если получение всех данных занимает секунду дольше (проверено с помощью 'установить время статистики')?

Одним из решений может быть создание частичного класса, расширяющего класс, созданный linq2sql, с использованием только необходимых полей, но я пытаюсь избежать этого ...

Другое решение, конечно, заключается в использовании

from p in base.dc.E_Products
select new E_Product
{
    ProductId = p.ProductId,
    ProductCode = p.ProductCode,
    etc
})

но мне очень любопытно узнать, существует ли эквивалентное лямбда-выражение для приведенного выше кода.

Спасибо

1 Ответ

1 голос
/ 20 июля 2010

Второе решение, которое вы предлагаете, не работает с LINQ to SQL, потому что оно не позволит вам создать новый объект LINQ to SQL в запросе LINQ, поскольку этот объект не будет иметь отслеживания изменений.

Лучшим вариантом является использование анонимного типа (если возможно) или создание объекта передачи данных (DTO) только с этими двумя полями:

public class ProductDto
{
    public ProductId { get; set; }
    public ProductCode { get; set; }
}

from p in base.dc.E_Products
select new ProductDto()
{
    ProductId = p.ProductId,
    ProductCode = p.ProductCode,
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...