다음과 같은 상황에서 함수의 returntype을 정의하는 방법을 알고 싶습니다.LINQ가있는 함수에서 반환 형식을 정의하는 방법?
나는 제품을 가지고 있으며 한 번에 모든 정보 또는 제품 하나를 반환하고있었습니다.
내 함수에서 볼 수 있듯이 아래에 정의되어 있습니다.
public static Products GetProducts(int pid)
{
var pro = from p in context.Products
select p;
if(pid > 0)
pro = pro.where(p => p.ProductID ==pid)
return (Products)p;
}
문제는 주조 오류입니다. 당신이 볼 수 있듯이 내가 얻고 자하는 것은 내 매개 변수에 기초하여 결과 집합을 얻는다. 어떤 시간은 제품 번들 & 한 번 제품. 나는 linq에 새로운 어떤 도움을 주시면 감사하겠습니다.
오류가 유형의 객체를 전송할 수 없음 는 'System.Data.Objects.ObjectQuery`1는 [TTDCore.Theatres]'TTDCore.Theatres '
IM을 결합 할 때의 gridview에 입력 할 수있다 . 여기 유형 Product
의 객체의 반복 가능한 (또는 열거)를 나타냅니다 당신은 IEnumerable<Product>
을 반환하려면 코드
Products p = Class1.GetProducts(0);
GridView1.DataSource = p;
GridView1.DataBind();
네 이것이 정확히 내가 찾고있는 것입니다. 그냥 빠른 하나 내가 이것을 시도 & gridview에서 잘 작동합니다. 단 하나의 기록을 반환하는 경우. 이런 식으로하는 게 옳은 길이야? 제품 p = (제품) Class1.GetProducts (1) .FirstOrDefault(); Response.Write (p.ProductName); 그 작품은 단지 wana가 올바른 방법인지 알고 있습니다. ur 빠른 응답을위한 고맙습니다. – Andy
아, 좋아. :) 그리고 네, 단일 레코드를 반환하는 제안 된 방법은 잘 작동합니다. 상황에 따라 First/FirstOrDefault 또는 Single/SingleOrDefault 확장 메서드가 적합합니다. 후자 (Single)는 하나 이상의 match가 * more * 인 경우 예외를 던지지만, 전자 (First)는 처음으로 반환하고 열거를 중지합니다. 'OrDefault' 비트는 예외를 던지는 것과는 대조적으로 일치하는 것이 없으면 기본값 (참조 유형의 경우 null)을 반환하는 것을 의미합니다. – Noldorin
쿼리는 하나의 표현식으로도 표현 될 수 있습니다. 컨텍스트의 p에서. p.ProductID == pid && pid> 0 select p –