2009-03-25 3 views
1

LINQ에서 데이터베이스 테이블의 이름과 다른 이름을 프로젝트하고 싶습니다. 열 머리글에 사용할 수있는 "친숙한 이름". "%"또는 가능하면 ""(공백)이있는 이름. 아래 쿼리는 컴파일되지 않습니다.LINQ 예측을 위해 어떤 옵션이 있습니까?

가능한가요 아니면 두려운 _ 밑줄을 사용하여 붙어 있습니까? 등

select new { MyNewProductName = p.product_name, MySillyColumnTitle = p.pct_sales } 

과 같은 사용하여 LINQ 쿼리의 부분을 선택 뭔가를

dim query = from p in ctx.SomeTable() _ 
    select ProductName = p.product_name, _ 
      [Expiration Date] = p.expiration_date, 
      [% of sales] = p.pct_sales 

답변

1

select 절을 사용하면 데이터베이스 필드에 다른 이름을 투영 할 수 있습니다.

Dim query = From p in ctx.SomeTable() _ 
    Select ProductName = p.product_name, ExpirationData = p.expiration_date 

그러나 여전히 선택된 이름은 유효한 VB 식별자 여야합니다. 따라서 공백이나 % 012를 사용하지 못하게됩니다.

0

. 이러한 속성은 쿼리에서 반환하는 IEnumerable 컬렉션에 대해 자동으로 만들어집니다.

+0

을 사용할 수 있습니다, 질문자가 VB.Net – JaredPar

3

LINQ에서 공백이나 % 기호를 허용하지 않는 변수 명명 규칙을 따라야합니다.

3

유효한 변수 이름을 만들어야합니다. 표시 이름을 변수 이름에 묶는 것은 매우 나쁜 생각입니다. IMO. i18n의 가능성은 전혀 없습니다. 물론 당연히 문제가되지는 않지만 UI와 데이터 액세스 코드 사이의 유대감이 너무 빡빡합니다.

열 머리글을 별도로 지정하는 것이 훨씬 더 좋습니다. 이렇게하면 코드에서 쉽게 사용할 수있는 유용한 변수 이름과 규칙 또는 식별자로 제한되지 않는 열 머리글로 끝납니다. 당신이 당신의 Linq에와 UI 사이에 위치하는 클래스를 만들 경우

+0

@ 존 갈 것으로 보인다 -의 분리에 대한 +1, 데이터 모델은 표현과 분리되어야한다. 나는 당신이 i18n을 말할 때 국제 성격 문제를 언급하고 있다고 생각합니까? – Maslow

0

당신이 C 번호의

Imports System.ComponentModel 

Public NotInheritable Class ModelSomeTable 

'Help prevent accidental direct field access in the class 
<EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)> _ 
private _pct_sales as decimal 

'Components will know what to use for the heading 
<Display("% of sales")> _ 
Public ReadOnly Property pct_sales() As decimal 
    Get 
     Return _pct_sales 
    End Get 
End Property 

'code can see it, datagrids/datagridviews and other components won't 
private _RowId as integer 
<Browsable(false)> _ 
    Public ReadOnly Property RowId() As integer 
    Get 
     Return _RowId 
    End Get 
End Property 

End Class 
관련 문제