在Lambda Expression中选择Func

时间:2011-02-14 07:18:00

标签: linq linq-to-sql c#-4.0 lambda

嗨专家 我想使用Lambda Expression并编写此代码:

Func<Regions, SelectAllRegion> Select = r => new {r.RegionID,r.RegionDescription};
        clsr.SelectAll<SelectAllRegion>(Select);

但我不行。它引发了这个错误:

Cannot implicitly convert type 'AnonymousType#1' to 'SelectAllRegion'

我该如何编写此代码?

2 个答案:

答案 0 :(得分:1)

我怀疑你想要:

Func<Regions, SelectAllRegion> Select = r => new SelectAllRegion {
                                      RegionID = r.RegionID,
                                      RegionDescription = r.RegionDescription };

假设您 得到了合适的SelectAllRegion课程。您发布的lambda表达式将Regions转换为匿名类型 - 这始终是new { ... }的结果。这只能(有用地)在类型推断的上下文中使用,而不是像你在这里一样的简单变量声明。

答案 1 :(得分:1)

您的第一行返回匿名类型。您想要返回SelectAllRegion - 类似这样的内容:

Func<Regions, SelectAllRegion> Select = r => new SelectAllRegion()
    {RegionID = r.RegionID, RegionDescription = r.RegionDescription};