정말 간단해야한다고 생각합니다.하지만 어떻게해야하는지 모르겠습니다. int 유형의 하나의 열을 선택하는 linq 쿼리가 있고 정렬해야합니다.Linq 목록을 하나의 열로 정렬하십시오.
var values = (from p in context.Products
where p.LockedSince == null
select Convert.ToInt32(p.SearchColumn3)).Distinct();
values = values.OrderBy(x => x);
SearchColumn3은 연산 유형 문자열이지만 정수 만 포함합니다. 그래서 생각, Int32로 변환 및 주문 확실히 좋은 1,2,3 정렬 된 값 목록을 줄 것이다. 그러나 그 대신 목록은 문자열과 같이 순서가 유지됩니다.
는199 20 201
업데이트 : 나는 C# 코드와 LinqPad 몇 가지 테스트를 완료했습니다. LinqPad는 다음과 같은 SQL 생성
SELECT [t2].[value]
FROM (
SELECT DISTINCT [t1].[value]
FROM (
SELECT CONVERT(Int,[t0].[SearchColumn3]) AS [value], [t0].[LockedSince], [t0].[SearchColumn3]
FROM [Product] AS [t0]
) AS [t1]
WHERE ([t1].[LockedSince] IS NULL)
) AS [t2]
ORDER BY [t2].[value]
을 그리고 내 SQL 프로파일 러 내 C# 코드는 SQL의이 조각을 생성 말한다 :
SELECT DISTINCT a.[SearchColumn3] AS COL1
FROM [Product] a
WHERE a.[LockedSince] IS NULL
ORDER BY a.[SearchColumn3]
는 그래서 C#을 Linq에 코드처럼 그냥 Convert.ToInt32를 생략합니다. 아무도 이것에 대해 유용한 것을 말할 수 있습니까?
오타가 있습니까? ... 당신은'diameters' 변수를 분류되지만'values' 변수로 선택된다. 'diameter = values.OrderBy (x => x);를 읽어야할까요? –
아마도 '값'대신 '직경'을 정렬했기 때문일 수 있습니까? –
'값'으로 선택하지만 '직경'으로 정렬됩니다. 이 문제는 단지 복사 편집 문제입니까 아니면 실제 코드입니까? – ChrisF