2010-11-23 3 views
0

저는 LINQ를 광범위하게 사용하지 않았지만 더 많이 사용할수록 그것이 얼마나 강력 할 수 있는지 깨닫습니다. 바인딩 된 항목의 속성을 정렬하려면 LinqDataSource.OrderBy 절을 사용하는 것이 분명하지만 메서드 반환을 기준으로 항목을 정렬하려면 어떻게해야할까요? 예를 들어,이 클래스를 타고 (기발한 디자인을 무시하세요 - 그냥 내 지점을 강조하는 데 사용) : LinqDataSource.OrderBy를 메서드의 결과로 설정할 수 있습니까?

public class DataItem 
{ 
    private string Id { get; set; } 

    private int SortValue { get; set; } 

    public DataItem(string id, int sortValue) 
    { 
     this.Id = id; 
     this.SortValue = sortValue; 
    } 

    public int GetSortValue() 
    { 
     return SortValue; 
    } 
} 

내가 LinqDataSource에 ORDERBY 식을 설정할 수있는 방법이 있나요 그것에서 반환 된 값을 사용하도록 GetSortValue (즉, 속성보다 다른 멤버에 의한 순서) DataItem 클래스를 변경하지 않고?

답변

1

메서드에 매개 변수가없는 경우 속성으로 래핑 할 수 있습니까?

public int SortOrderBy { get { return GetSortValue(); } } 

편집 : 매개 변수가 클래스 또는 필드/속성 인 경우에도 적용됩니다.

+0

안녕하세요 잭슨, 실제로 속성에서 메서드를 래핑 할 수 있습니다 - 불행히도 (그리고 아마도 내가 전에 언급해야 함) DataItem 클래스를 수정할 수 없습니다. Dataitem 클래스를 변경하지 않고 order 속성을 설정하는 방법이 있는지 궁금합니다. –

+0

내가 두렵다는 것을 알 수 없습니다. –

0

MSDN docs 실제로 사용자 지정 정렬을 수행 할 수 있다고 언급했으나 질문을 잘못 해석했을 수 있습니다.

+1

당신은'IEnumerable .OrderBy()'(LINQ)에 대한 참조를 링크 시켰고, meawhile OP는'System.Web.UI.WebControls.LinqDataSource' – abatishchev

관련 문제