2014-05-21 2 views
-2

나는 vb.net을 사용하는 프로그램을 만들고있다. 콘솔 응용 프로그램이고 데이터베이스를 사용하지 않습니다.데이터 테이블에서 최소 가격을 찾기위한 Linq 쿼리

사용자가 입력 한 전화 번호로 가장 저렴한 가격을 찾아야합니다. datatable의 구조는 pricelist (id, code, operator, price)입니다. 원하는 전화 번호에 최저 가격을 제공하는 오퍼레이터를 제공 할 수있는 Linq 쿼리를 작성해야합니다.

+1

"pricelist (id, code, operator, code)"는 질문과 관련하여 많은 의미를 갖지 않습니다. _price_은 어디에 있습니까? – J0e3gan

+0

죄송합니다. 코드가 아니라 가격입니다. 나는 지금 이와 비슷한 것을 원합니다. Dim result() As DataRow = table.Select ("min (price) AND Code ="& code_passed_by_user) –

답변

0

LINQ 확장 방법/쿼리를 사용하려면 IEnumerable이 필요합니다. AsEnumerable() 확장 메소드를 호출하여 DataTable에서 가져올 수 있습니다.

그런 다음 쿼리를 고장날 수 :

' Extract just the rows for the code entered by the user 
Dim rowsForCode = dt.AsEnumerable().Where(Function(x) x("code") = userEnteredCode).ToList() 
' Find the minimum price for these rows 
Dim minPrice = rowsForCode.Min(Function(x) CDec(x("price"))) 
' Find the first row with the minimum price 
Dim minRow = rowsForCode.Where(Function(x) x("price") = minPrice).First() 

참고 : 동일한 코드에 대한 동일한 가격을 제공하는 여러 사업자가있는 경우, 테이블의 첫 번째는 항상 선택됩니다. 일치하는 모든 행을 가져올 수 있으며 (.First() 통화를 삭제) 문제가있는 경우 임의의 행을 선택합니다.

+0

이 코드를 복사했습니다. 하지만 코드의 첫 번째 줄에서는 "dt"아래에 빨간색 선이 표시되며 스터드를 생성하고 "priclist"라고 쓰면 내 데이터 테이블의 이름에 과부하 해결이 표시됩니다. :/ –

+0

@FaizanKarim 프로젝트에'System.Data.DataSetExtensions'에 대한 참조가 있고'Using System.Data'를 사용하여'AsEnumerable' 확장 메소드를 가져 오나요? – Mark

+0

예 참조로 가져 왔으며 system.data도 가져 왔습니다. 내 프로젝트를 보내려면 어떻게해야합니까? 여기에 코드를 업로드해야합니까? 단지 4-5 가지 방법 일뿐입니다. –