【发布时间】:2015-12-03 17:06:16
【问题描述】:
匿名类在 c# 中具有只读属性。这通常用于在 linq 选择查询中声明以从数据库中获取特定值。
在我的代码中,我有以下查询。让我使用新语句选择匿名类的新对象让我感到困惑的事情。我有一个模型类 StudentClerkshipsLogModel 。当我使用模型名称时,查询结果允许编辑。
var query = (from entity in _tblStudentClerkshipsLog.GetQueryable()
where entity.StudentID == intStudentID
select new StudentClerkshipsLogModel
{
StudentClerkshipID = entity.StudentClerkshipID,
StudentID = entity.StudentID,
ClerkshipID = entity.ClerkshipID,
}).ToList();
当我在select 语句中没有在new 之后提及类型时,我无法退出。编译器引发错误。匿名对象是只读的。
var query = (from entity in _tblStudentClerkshipsLog.GetQueryable()
where entity.StudentID == intStudentID
select new
{
StudentClerkshipID = entity.StudentClerkshipID,
StudentID = entity.StudentID,
ClerkshipID = entity.ClerkshipID,
}).ToList()
我的问题是 linq 如何以不同的方式绑定 about 两个查询。两个查询都有动态绑定,或者第一个是静态的。
谢谢
【问题讨论】:
-
“我无法退出”是什么意思?编译器抱怨什么代码? (我怀疑这是您显示的代码。)您是否稍后尝试修改对象?如果是,请显示代码。
-
我想稍后修改代码。但我需要知道选择查询之间的区别,以便我可以选择更好的。
-
@JonSkeet:看起来像是错字。 “我无法编辑”。
-
它们只是不同而已。一个项目为匿名类型,另一个项目为命名类型。如果你以后需要修改对象,你肯定不能使用匿名类型,因为匿名类型的属性是只读的。这与LINQ直接无关......
-
@MuhammadNasir:定义“更好”的标准。
标签: c# linq anonymous-class dynamic-binding