다른 컬럼에서 정렬하는 동안 테이블에서 다른 값 목록을 선택하려고합니다.NHibernate 3 가지 타입의 안전한 값으로 다른 값을 선택하는 방법
나를 위해 지금까지 유일하게 작동하는 것은 마법 문자열과 개체 배열을 사용합니다. 더 나은 (유형 안전) 방법? 사용에 관한 Expression type 'NhDistinctExpression' is not supported by this SelectClauseVisitor.
:
var projectionList = Projections.ProjectionList();
projectionList.Add(Projections.Property("FolderName"));
projectionList.Add(Projections.Property("FolderOrder"));
var list = Session.QueryOver<T>()
.Where(d => d.Company.Id == SharePointContextHelper.Current.CurrentCompanyId)
.OrderBy(t => t.FolderOrder).Asc
.Select(Projections.Distinct(projectionList))
.List<object[]>()
.ToList();
return list.Select(l => new Folder((string)l[0])).ToList();
BTW, LINQ와 함께 그 일을하면, 그렇지 않으면 당신은 SQL 오류 (ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
)
다음 일을 그 제공 알려진 오류가 발생합니다 FolderOrder 선택해야 작동하지 않습니다 별개의
var q = Session.Query<T>()
.Where(d => d.Company.Id == SharePointContextHelper.Current.CurrentCompanyId)
.OrderBy(d => d.FolderOrder)
.Select(d => new {d.FolderName, d.FolderOrder})
.Distinct();
return q.ToList().Select(f => new Folder(f));
모든 익명 유형은 농구와 일부 SQL 기본 작업을 수행하는 복잡성의 많은 ....