linq
2010-06-16 5 views 4 likes 
4

선언적 데이터 소스를 사용할 때 어떻게 다른 레코드를 선택할 수 있습니까?선언적 linq 데이터 원본에서 고유 한 레코드를 선택 하시겠습니까?

<asp:LinqDataSource ID="dsColors" runat="server" 
    ContextTypeName="Context" 
    OrderBy="Id, Name" 
    Select='new (Id, String.Concat(Id + ": " + Name) as ColorName)' 
    TableName="Colors"> 
</asp:LinqDataSource> 

답변

4

그룹 분류 기준으로 해킹합니다.

<asp:LinqDataSource ID="dsColors" runat="server" 
    ContextTypeName="Context" 
    OrderBy="Id, Name" 
    Select='new (Id, String.Concat(Id + ": " + Name) as ColorName)' 
    TableName="Colors" 
    GroupBy='new(Id,Name)' 
> 
</asp:LinqDataSource> 
1

그것은 작동해야이 정도

private Context ctx; 

protected void Page_Init(object sender, EventArgs e) 
{ 
    ctx = new Context(); 
} 

protected void dsColors_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    var results = (from c in Colors 
        select c.ID).Distinct(); 
    e.Result = results; 
} 

뭔가 뒤에 코드에서 다음

<asp:LinqDataSource ID="dsColors" runat="server" 
    ContextTypeName="Context" 
    OnSelecting="dsColors_Selecting" 
    TableName="Colors"> 
</asp:LinqDataSource> 

선택에 통해 수행하는 것이 좋습니다.

0

group by을 사용하면 key이라는 개체가 생성됩니다. 하나의 값으로

그룹 : 여러 값에 의해

GroupBy="Name" 
Select="new (key as Name)" 

그룹 :

GroupBy="new(ID, Name)" 
Select="new (key.ID, key.Name, min(OtherValue) as OtherValue)" 
:

GroupBy="new(ID, Name)" 
Select="new (key.ID, key.Name)" 

사용 aggregate queries하여 그룹의 다른 속성을하지 액세스하려면

관련 문제