在LINQ中,我想要设置与数据库表中不同的名称。我可以用于列标题的“友好名称”。具有“%”或可能为“”(空格)的名称。下面的查询将无法编译。
这样的事情是可能的还是我坚持使用可怕的_下划线来处理所有事情?
dim query = from p in ctx.SomeTable() _
select ProductName = p.product_name, _
[Expiration Date] = p.expiration_date,
[% of sales] = p.pct_sales
答案 0 :(得分:3)
在LINQ中,您仍然必须遵循变量命名规则,该规则不允许使用空格或%符号。
答案 1 :(得分:3)
您仍然需要创建有效的变量名称。将显示名称绑定到变量名称将是一个非常糟糕的主意,IMO。绝对没有i18n的机会,当然这对你来说可能不是问题 - 但它在UI和数据访问代码之间形成了太紧密的联系。
分别指定列标题会好得多。这样,您最终会得到易于使用的合理变量名称,以及不受规则或标识符限制的列标题。
答案 2 :(得分:1)
使用select子句可以为数据库的字段设置不同的名称。
Dim query = From p in ctx.SomeTable() _
Select ProductName = p.product_name, ExpirationData = p.expiration_date
但是,所选的名称仍必须是有效的VB标识符。这样就无法使用空格或%
答案 3 :(得分:0)
对于LINQ查询的选择部分,请使用类似
的内容select new { MyNewProductName = p.product_name, MySillyColumnTitle = p.pct_sales }
等等。将为查询返回的IEnumerable集合自动创建这些属性。
答案 4 :(得分:0)
如果您创建一个位于Linq和UI之间的类,则可以使用
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