2009-07-22 4 views
1

ADO.Net 데이터 서비스에서 내 손을 노력하고 있습니다. 모든 예제에서는 목록을 검색하는 방법을 보여 주지만 단일 값을 검색하는 방법은 무엇입니까? 예 : 제품 X의 가격. 여기ADO.Net 데이터 서비스 및 LINQ로 단일 값 선택

는 LINQ 쿼리 제가 사용된다 : svcContext.Products 에서 = (p 행

VAR의 QRY 여기서 p.ProductName == "의장" & & p.Colour의 == 1 선택 c) DataServiceQuery로;

Product returnedProd;

qry.BeginExecute ( (pr) => returnedProd = qry.EndExecute (pr) .First(), null);

여기서 제품을 검색하고 로컬 변수에로드하려고 시도하지만 로컬 변수는 null로 유지됩니다.

확실히, 나는 그것을 완전히 잘못하고있다.) ... 어떤 도움이라도 대단히 감사하겠습니다.

var에 QRY이 = (svcContext.Products의 페이지에서 == "의자"& & p.Colour == 1 선택, p는 p.ProductName 곳) 여기서 당신은 C를 선언 않은 것으로 생각하지 것

답변

1

? 유감

0

가 =

VAR의 QRY 가정되었다 ( svcContext.Products에서 P로부터 여기서 p.ProductName == "의장"& & p.Colour == 1 [P) 등 DataServiceQuery < 제품>;

0

First() 결과 집합이 비어있는 경우 예외가 throw되어야합니다. 쿼리가 실행되고 있습니까?

0

모든 실버 라이트 발신 요청의 비동기 특성으로 인해 처음으로 타격을받은 것은 아닙니다. 람다 표현식

(pr) => returnedProd = qry.EndExecute(pr).First() 

에서

당신이 BeginExecute가 너무 늦게 될 것입니다 호출 된 후에 분사합니다 로컬 변수 returnedProd하지만 일반적으로 스레드를 캡처합니다. 실행이 현재 메서드의 범위를 벗어나서 변수가 손실 된 후에 실행됩니다.

해결 방법은 "returnedProd"를 사용하여 UI를 채우거나 IN 람다 식을 수행해야하는 작업을 효과적으로 채우는 것입니다. 뭔가 같이 : 지역 사회에 대한

(pr) => { 
    returnedProd = qry.EndExecute(pr).First(); 
    MessageBox.Show("Retrieved record" + returnedProd.Id); 
} 

그렇지 않으면 유용한 답변, 내가 한 몇 주 전에 :(

+0

있었으면 좋겠다 코드의이 작은 조각을 시도하고 우리가 경우 적어도 MessageBox.Show 당신에 알려 원하는 데이터를 얻으십시오. –