복붙노트

[SQL] LINQ의 String 비교를하는 문제

SQL

LINQ의 String 비교를하는 문제

나는 문제가 쿼리 I 필요로 뭔가를 번역하는 LINQ를 얻는 데 문제가 있습니다. T-SQL에서, 우리는 CHAR (6) 열 세 개의 기둥에 <= 및> = 비교를. LINQ 날부터이 작업을 수행하도록 허용하지 않습니다

나는 다음과 같은 T-SQL 쿼리를 ..

SELECT * 
FROM [ZIPMASTER] zm
WHERE zm.CORP = 12 
AND '85546 ' BETWEEN zm.ZIPBEG AND zm.ZIPEND

BETWEEN에 대한 지원이 없기 때문에 위, freindly 매우 LINQ 없습니다. 따라서, 나는 다음에 단순화 :

SELECT *
FROM [ZIPMASTER] zm
WHERE zm.CORP = 12
AND zm.ZIPBEG <= '85546 '
AND zm.ZIPEND >= '85546 '

나는 다음의 LINQ 쿼리를 작성하는 데 사용되는이있는 :

var zipLinqQuery =
    from z in db.ZIPMASTERs
    where z.CORP == 12
    && z.ZIPBEG <= "85546 "
    && z.ZIPEND >= "85546 "
    select z;
List<ZIPMASTER> zips = zipLinqQuery.ToList<ZIPMASTER>();

C # - LINQ는 너무 많은이 쿼리를 좋아하지 않습니다. 나는 그러나, 어떤 경우에는 우편 번호가 문자를 포함 할 수 있습니다,의 int로 변환 한 후 비교했습니다. 예를 들어, 다음과 같은 표현은 T-SQL에서 true로 평가합니다 :

WHERE '85546B' BETWEEN '85546A' AND '85546D'

이 T-SQL에서 작동하지만, 내 생각 엔 그것은 숫자 ASCII 값으로 변환하여 개별적으로 배열의 각 문자를 비교한다는 것입니다 이유를 정확하게 알 수 없습니다.

어쨌든, 당신이 모두 제공 할 수있는 모든 도움을 크게 감사합니다. 미리 감사드립니다.

CJAM

솔루션 (존 소총에 의해 게시) :

String.compareTo가 ()가 실제로 필요한 T-SQL을 생성에 않는 것 같습니다. 예를 들면 아래 :

var zipLinqQuery =
    from z in db.ZIPMASTERs
    where z.CORP == listItem.CORP
    && z.ZIPBEG.CompareTo(listItem.ZIPCODE) <= 0
    && z.ZIPEND.CompareTo(listItem.ZIPCODE) >= 0
    select z;

다음 T-SQL을 생성합니다 :

DECLARE @p0 INT, @p1 CHAR(6), @p2 CHAR(6)
SET @p0 = 12
SET @p1 = '85546 '
SET @p2 = '85546 '

SELECT [t0].[CORP], [t0].[ZIPEND], [t0].[ZIPBEG], [t0].[CITY], [t0].[STATE], [t0].[CYCLE]
FROM [dbo].[ZIPMASTER] AS [t0]
WHERE ([t0].[CORP] = @p0) AND ([t0].[ZIPBEG] <= @p1) AND ([t0].[ZIPEND] >= @p2)

해결법

  1. ==============================

    1.시험:

    시험:

    var zipLinqQuery =
        from z in db.ZIPMASTERs
        where z.CORP == 12
        && z.ZIPBEG.CompareTo("85546 ") <= 0
        && z.ZIPEND.CompareTo("85546 ") >= 0
        select z;
    

    나는 String.compareTo가이 SQL에 LINQ의 작동하는지 모르겠지만, 시도하는 최초의 일이다.

    (일반적으로 당신이 비교의 오른쪽 유형을 지정하는 StringComparer를 사용해야합니다,하지만 난 compareTo와 더 나은 옵션이 경우에 생각한다.)

  2. from https://stackoverflow.com/questions/578231/issues-doing-a-string-comparison-in-linq by cc-by-sa and MIT license