在列表中创建自定义linq列名称

时间:2015-04-21 11:39:49

标签: c# linq anonymous-types

我们将一个通用List返回给GridView,然后GridView自动生成列以显示报告:

//Generate List
List<Stock> allStock = blStock_Collection.getAll();

//export custom view for report datagrid
return (from myStock in allStock
        select new
        {
            myStock.Category,
            myStock.Description,
            myLowStock.UnitPrice,
            myLowStock.CurrentQuantity
        });

我们的客户要求我们现在在我们的网站(英语和波兰语)上提供多语言支持,特别是网格上的列标题。因此,我们需要摆脱所有数据网格上的自动生成选项,并为每列手动添加翻译。

我想知道在生成数据源时有没有办法做到这一点,这将为我们节省大量时间,例如改变这一行:

myStock.Category,

类似于:

languagePack.Category = myStock.Category,

这当然会抛出'无效的匿名类型成员声明符'错误。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

也许我误读了一些东西,但是如果你只想把你的语言放入其中(LanguagePack只是一个持有你价值观的课程):

class LanguagePack 
{
    public int Category { get; set; }
    public string Description { get; set; }
    public decimal UnitPrice { get; set; }
    public int CurrentQuantity { get; set; }
    public int LanguageName { get; set; }

}

return (from myStock in allStock
    select new LanguagePack
    {
        Category = myStock.Category,
        Description = myStock.Description,
        UnitPrice = myLowStock.UnitPrice,
        CurrentQuantity = myLowStock.CurrentQuantity,
        LanguageName = "Polish" // or english or whatever... maybe LanguageId or something corresponding to your model
    });