내 INT 년대에 신비 "1"을 추가 .... 내가 LINQ 아래의 SQL 방법에있다 ->LINQ 난, 난 그냥 난처한 상황에 빠진를 예정하고 인정해야 생성 된 SQL
public static int GetLastInvoiceNumber(int empNumber)
{
using (var context = CmoDataContext.Create())
{
context.Log = Console.Out;
IQueryable<tblGreenSheet> tGreenSheet = context.GetTable<tblGreenSheet>();
return (tGreenSheet
.Where(gs => gs.InvoiceNumber.Substring(3, 4) == empNumber.ToString())
.Max(gs => Convert.ToInt32(gs.InvoiceNumber.Substring(7, gs.InvoiceNumber.Length)))
);
}
}
를이했다 거의 같은 일 을 달성하기 위해 동료에 의해 작성된 SQL 쿼리에서 기반으로 만든 ->
- 그러나>SELECT DISTINCT
SUBSTRING([InvoiceNumber], 1, 6) AS EmpNumber,
MAX(CAST(SUBSTRING([InvoiceNumber], 7, LEN([InvoiceNumber])) AS INT)) AS MaxInc
FROM [CMO].[dbo].[tblGreenSheet]
WHERE SUBSTRING([InvoiceNumber], 3, 4) = '1119' --EmployeeNumber
GROUP BY SUBSTRING([InvoiceNumber], 1, 6)
, 생성되고있는 SQL, 내가 context.Log = Console.Out
를 통해 확인이입니다
SELECT MAX([t1].[value]) AS [value]
FROM (
SELECT CONVERT(Int,SUBSTRING([t0].[InvoiceNumber], @p0 + 1, LEN([t0].[InvoiceNumber]))) AS [value], [t0].[InvoiceNumber]
FROM [dbo].[tblGreenSheet] AS [t0]
) AS [t1]
WHERE SUBSTRING([t1].[InvoiceNumber], @p1 + 1, @p2) = @p3
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [7]
-- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [3]
-- @p2: Input Int (Size = 0; Prec = 0; Scale = 0) [4]
-- @p3: Input VarChar (Size = 4; Prec = 0; Scale = 0) [1119]
실제로는 글래리을 제외하고는 꽤 가까운 것을 볼 수 있습니다. 일부는 +1
의 것을 추가했습니다 !!!
WTH?!?
심지어 생성 된 SQL에서 +1
을 제거하고 원본 SQL과 동일한 결과를 생성하여 실행하는 것으로 올바른지 확인했습니다.
그래서 무엇이 잘못되었거나 잘못 되었습니까? 이게 잘 알습니까 LOL의 LINQ는 덜 재능있는 프로그래머와 함께 할 수 있습니까?
나는 볼 수 있지만 LINQ 버전은 전혀 작동하지 않습니다. 일치하는 것이 없으므로 NULL을 반환합니다. 하지만 SQL 버전이 작동하고 LINQ/SQL 덤프가 + 1의 –
BTW없이 작동한다는 것을 알고 있습니다. 설명해 주셔서 감사합니다. 왜 작동하지 않는지 알고 싶습니다. –