2009-10-14 2 views
0

LINQ to dataset 쿼리에 문제가 있습니다. 데이터가 데이터 집합에 double로 반환되고 null 일 수 있다는 문제가 있습니다. 내 LINQ 쿼리에 데이터를 가져올 때 소수 첫째 자리가 자릅니다. 아무도 두 자리 소수점을 유지하도록 정밀도를 설정하는 가장 좋은 방법을 말할 수 있는지 궁금합니다. 'Double'을 사용해 보았습니다. 하지만 이렇게하면 잘못된 캐스트 예외가 발생합니다. 여기 내 L2D 쿼리의 샘플은 다음과 같습니다VB.Net에서 LINQ와 데이터 집합의 정밀 문제 - 이중 잘못된 캐스트 예외

Dim query = _ 
From bb In bbdata.AsEnumerable(), _ 
     ab In abdata.AsEnumerable() _ 
    Where (bb.Field(Of String)("bbID").ToUpper.Trim() = _ 
      ab.Field(Of String)("abID").ToUpper.Trim()) _ 
Order By _ 
      bb.Field(Of String)("Sequence") Descending, _ 
      bb.Field(Of String)("Name") Ascending, _ 
      bb.Field(Of String)("bbID").ToUpper.Trim() Ascending, _ 
      ab.Field(Of Decimal?)("TWO_DECIMAL_DIGIT_DOUBLE") Descending _ 
Select New With _ 
{ _ 
    .bbID = bb.Field(Of String)("bbID"), _ 
    .Weight = ab.Field(Of Decimal?)("TWO_DECIMAL_DIGIT_DOUBLE"), _ 
    .Sequence = bb.Field(Of String)("Sequence"), _ 
    .Name = bb.Field(Of String)("Name"), _ 
} 

내가 이것을 실행하면 더블 소수점에 잘린이며, 2 개 진수 장소가 어디 정밀 될 필요가있다. 어떤 도움이라도 대단히 감사합니다.

답변

0

아마도 Weight 속성이 소수 자릿수의 정밀도로 값을 반올림하기 때문일 수 있습니다. 나는이 문제를 일으킬 수있는 것이 무엇인지 알지 못합니다 ...

+0

데이터 세트 중 하나는 십진수 1의 정밀도를 갖지만 다른 하나는 십진수 2의 정밀도를가집니다. 잘라 버리고 반올림하지 않았기 때문에 혼란 스러웠습니다. 그래서 최소한의 정확성 문제 일 수 있다고 생각하지 않았습니다. 난 그냥 linq 문제가 있어야한다고 생각 linq 새로운 있습니다. 쓰레기. 도와 줘서 고마워! – Brian