System.Data.Linq.SqlClient
에 SqlMethods
을 사용하여 SQL Like 쿼리를 수행 할 수 있습니다.
(from a in identifier
where !SqlMethods.Like(a.value, "%[^0-9]%")
select a).Max(x => Convert.ToInt64(x.value))
이 Linq에 문 LinqPad에 따라이 쿼리가된다 :
-- Region Parameters
DECLARE @p0 VarChar(8) = '%[^0-9]%'
-- EndRegion
SELECT MAX([t1].[value]) AS [value]
FROM (
SELECT CONVERT(BigInt,[t0].[value]) AS [value], [t0].[value]
FROM [Identifier] AS [t0]
) AS [t1]
WHERE NOT ([t1].[value] LIKE @p0)
LinqPad 당신은 당신이 찾고있는 것을 얻을 수 있는지 확인하기 위해 쿼리를 함께 놀러 수있는 좋은 방법입니다. 좋은 L2S가없는 유일한 SQL 문은 PIVOT 키워드를 가진 SQL 문과 같습니다. 그 외에는 일반적으로 원하는 것을 얻을 수있는 방법이 있습니다.
은 전체 기록 만이 아니라 MAX() 값을 원하는 경우에, 당신은 쿼리 이런 식으로 할 수있는 : 중첩 된 선택은 비를 제외하지 않고 변환을하고 있기 때문에
(from a in Accounts
orderby (!SqlMethods.Like(a.AccountNumber, "%[^0-9]%") ?
Convert.ToInt64(a.AccountNumber) : 0)
descending
select a).Take(1)
쿼리가 비록 실패를 숫자 값. – sipwiz
죄송합니다. 나는 Like 인수를 전환했다. 내가 그것을 업데이트하고 더미 데이터 및 첫 번째 쿼리를 실행 (SQL 2008)에 대해 그것을 테스트했습니다. – mattmc3
난 그저 잘 했어 :). 그러면 쿼리 분석기에서 SQL을 더 자세히 볼 수 있습니다. – sipwiz