创建Linq语句以创建对象

时间:2010-01-28 10:32:34

标签: linq-to-entities

如果我创建了如下所示的Linq语句,它可以正常工作。

var Jobs = from a in ctx.MyExport
           select new
           {
               FileName = a.FilePath,
               JobId = a.ID,
           };

如果我想使用类而不是匿名类型,我会收到以下错误“无法将lambda表达式转换为类型'string',因为它不是委托类型”。

以下是我想要使用的代码:

var Jobs = from a in ctx.MyExport
           select new MyClass
           {
               FileName = a.FilePath,
               JobId = a.ID,
           };

这是班级:

public class MyClass
{
    public string FileName { get; set; }
    public Guid JobId { get; set; }
}

谁能告诉我我做错了什么以及如何解决?

1 个答案:

答案 0 :(得分:1)

上面的代码是正确的,因为您没有向我们展示的代码,您收到错误消息。

您正在尝试将非物质化查询分配给字符串变量,这将导致错误。 将类型更改为 IEnumerable 将立即实现查询,无论您是否使用它,它都将从数据库中取出。所以不推荐该解决方案。

答案是在使用前实现查询,我假设您正在对此集合执行 foreach ,因此 Jobs.AsEnumerable()工作.ToList()(取决于你想用它做什么)是你应该做的。