제목을보다 정확하게 표현할 수 없으니 실례합니다.LINQ to SQL : 속성에 대해 다시 사용할 수있는 식?
기본적으로 테이블에 연결된 3 개의 LINQ 개체가 있습니다. 하나는 Product이고 다른 하나는 Company이며, 마지막은 매핑 테이블입니다. Company가 판매하는 제품과이 회사가이 제품을 가리키는 ID를 저장하는 매핑입니다. 지금은 제품의 목록을 검색하고
다음과 같이
var options = new DataLoadOptions();
options.LoadWith<Product>(p => p.Mappings);
context.LoadOptions = options;
var products = (
from p in context.Products
select new {
ProductID = p.ProductID,
//BackendProductID = p.BackendProductID,
BackendProductID = (p.Mappings.Count == 0)
? "None"
: (p.Mappings.Count > 1)
? "Multiple"
: p.Mappings.First().BackendProductID,
Description = p.Description
}
).ToList();
이 내가 원하는 정보를 검색하는 하나의 쿼리를 수행합니다. 하지만 나는 BackendProductID 뒤에있는 로직을 LINQ 객체로 옮기고 싶다. 그래서 깔끔하고 중첩 된 3 진 연산자 문 대신에 주석 처리 된 행을 사용하여 깔끔함과 재사용 가능성을 높일 수있다.
그래서 나는 제품 객체에 다음과 같은 속성을 추가 :public string BackendProductID
{
get
{
if (Mappings.Count == 0) return "None";
if (Mappings.Count > 1) return "Multiple";
return Mappings.First().BackendProductID;
}
}
목록은 여전히 동일하지만 지금은 BackendProductID이다 얻기 위해 모든 단일 제품에 대한 쿼리를 수행합니다. 코드가 깨끗하고 재사용 가능하지만 성능은 이제 끔찍합니다.
내가 필요로하는 것은 Expression이나 Delegate의 일종이지만 필자는 필자가 글쓰기를 할 때 머리를 쓸 수 없었다. 항상 모든 단일 제품에 대한 쿼리를 종료했습니다.
도움이 될 것입니다.