【发布时间】:2009-08-24 12:59:21
【问题描述】:
我正在使用 LINQ to SQL 和 DataGridViews 创建数据库的可编辑用户界面。
我的问题是从数据库中获取结果时我必须翻译列名,因为虽然数据库中的所有名称都是英文(Visual Studio 类设计器支持的唯一语言),但我必须以不同的语言显示它们...
所以我想到了使用匿名类型:
c_dgvShops.DataSource = (from Shop s in DataContext.Shops
select new
{
Azonosito = s.Shop_ID,
Nev = s.Name,
Megye = s.County,
Iranyitoszam = s.Zipcode,
Cim = s.Address,
Latogatasok_szama = s.Visits.Count
});
(请注意,匿名类型的属性名称是匈牙利语[我必须显示的语言],翻译自英文。)
这导致 DataGridViews 是只读的。
我做了一些谷歌搜索,发现了这个:
http://blogs.msdn.com/swiss_dpe_team/archive/2008/01/25/using-your-own-defined-type-in-a-linq-query-expression.aspx.
根据这篇文章,我创建了一个名为“Bolt”(Shop 的匈牙利语等价物)的新类,并用翻译后的属性名称填充它,因此查询变为:
c_dgvShops.DataSource = (from Shop s in DataContext.Shops
select new Bolt
{
Azonosito = s.Shop_ID,
Nev = s.Name,
Megye = s.County,
Iranyitoszam = s.Zipcode,
Cim = s.Address,
Latogatasok_szama = s.Visits.Count()
});
虽然我不是很清楚,但是这怎么可能编辑DataGridView中显示的数据,我试了一下,出现了异常:
NotSupportedException:不允许在查询中显式构造实体类型“DataTest_L2SQL.Bolt”。
那么正确的做法是什么?如何显示别名列名称,但仍保持数据可编辑?
非常感谢您!
【问题讨论】:
标签: c# linq-to-sql anonymous-types