2016-12-27 1 views
0

나는 약간의 어려움이 linq 나는 아래의 SQL 문을 복제해야 생성하고 있습니다. 데이터2 열 범위 사이의 Linq 값

SELECT TOP (1000) [Id] 
     ,[Price] 
     ,[ThicknessFrom] 
     ,[ThicknessTo] 
     ,[WeightFrom] 
     ,[WeightTo] 
    FROM [dbo].[MyTable] 
    WHERE (8 between [ThicknessFrom] and [ThicknessTo]) 
    AND (100 between [WeightFrom] and [WeightTo]) 

예 제가 가지고

id: 1, price: 1, thicknessFrom: 0, thicknessTo: 10, weightFrom: 0, weightTo: 125 
id: 2, price: 2, thicknessFrom: 11, thicknessTo: 20, weightFrom: 126, weightTo: 250 

제가 2 개 입력, 반환 중량 및 두께에 기초하여 데이터를 반환하는 것 인 상기 LINQ 문에서 쿼리를 반환 할 ID = 1 .

감사

+0

[ThicknessFrom]과 [ThicknessTo] 사이의 8은 [ThicknessFrom] = 8 및 [ThicknessTo] = 8을 의미합니까? –

+0

질문에 샘플 데이터를 추가했습니다. – nologo

답변

4
MyTable.Where(entities => entities.ThicknessFrom <= 8) 
     .Where(entities => entities.ThicknessTo >= 8) 
     .Where(entities => entities.WeightFrom <= 100) 
     .Where(entities => entities.WeightTo >= 100) 
     .Take(1000); 

.Take() 방법이 실행될 때까지 쿼리가 실제로 실행되지 않습니다.

+1

고마워. 그게 한 시간 동안 나를 괴롭혔다! 게시물 크리스마스 숙취 코딩이 좋지 않다 – nologo

+2

SQL 사이에 ** ** ** 포함되어 있습니다. 귀하의 코드는 독점적입니다. '<'를'<=' and '>'에서'> ='으로 변경하십시오. –

+0

@RichardSchneider 아, 그건 당황 스럽네요. \ –

1

, 다음 y를 줄 것이다, 다음과 같은 LINQ를 만들 수 있습니다 inputThicknesinputWeight는 두 개의 입력을하자 필요한 결과를 ou는 : 우리가 위하고있는 것은/깨끗하고 읽기 쉬운 일을 계속하기 위해 여러 술어 체인입니다

var requiredCollection = (from t in db.MyTable where 
           t.ThicknessFrom < inputThicknes && 
           t.ThicknessTo >= inputThicknes && 
           t.WeightFrom < inputWeight && 
           t.WeightTo >= inputWeight 
          select t).Take(1000) 
+1

이봐, 작동하지 않습니다. 진입 등 그게 :. SELECT [DBO] FROM * [SamplePostPrices] 여기서 ([ThicknessFrom] "8 [ThicknessTo] <8) 및 ([WeightFrom]> 100 [WeightTo] <100) 하지만 난 단지 '사이'를 사용하여 성명을 얻을 수 있습니다 – nologo

+0

나는 당신이 좀 봐 주시기 바랍니다 경우 비교 연산자를 변경하여 답변에 몇 가지 업데이 트를 가지고 –