C# 在LINQ中初始化新对象时出现问题
此代码生成时没有问题,但执行时失败:C# 在LINQ中初始化新对象时出现问题,c#,linq-to-entities,C#,Linq To Entities,此代码生成时没有问题,但执行时失败: var query = _db.STEWARDSHIP .OrderByDescending(r => r.VisitDate) .Where(r => SiteId == null || r.SiteAssoc.Id == iSiteId) .Where(r => r.MarkedForDeletion == false) .Select(r => new Se
var query =
_db.STEWARDSHIP
.OrderByDescending(r => r.VisitDate)
.Where(r => SiteId == null || r.SiteAssoc.Id == iSiteId)
.Where(r => r.MarkedForDeletion == false)
.Select(r => new SearchResults(r.Id,
r.SiteAssoc.Name,
r.VisitDate,
r.VisitTypeValAssoc.Description));
错误消息是:
LINQ to实体中只支持无参数构造函数和初始值设定项。
我做错了什么?我必须将信息传递给构造函数以构建SearchResults对象。有没有办法做到这一点,或者我必须让这成为一个两步的事情,在那里我得到结果,然后迭代结果来创建新的对象
更新:
将“选择”更改为此可修复此问题:
.Select(r => new SearchResults(){Id = r.Id,
Name = r.SiteAssoc.Name,
VisitDate = r.VisitDate,
VisitType = r.VisitTypeValAssoc.Description});
试试这个
.OrderByDescending(r => r.VisitDate)
.Where(r => SiteId == null || r.SiteAssoc.Id == iSiteId)
.Where(r => r.MarkedForDeletion == false)
.Select(r => new SearchResults()
{
ID = Ir.Id,
Name = r.SiteAssoc.Name,
VisitDate = r.VisitDate,
Description = r.VisitTypeValAssoc.Description
});
实体可以在查询之外创建并插入到数据中
使用DataContext存储。然后可以使用查询检索它们。
但是,不能在查询中创建实体
看到这个帖子了吗
LINQ不允许在select语句中显式构造对象。Haris,这不起作用,我得到的Id、名称等在当前上下文中不存在。您应该将
Id
、Name
等替换为SeachResults
类的实际属性名感谢链接。在查看答案时,我看到:c=>newattachmentculture{Culture=c}当我翻译成我的例子时,它是有效的。参见我在原始帖子中添加的注释。