【发布时间】:2016-07-14 13:01:56
【问题描述】:
我想使用 EF 从数据库中读取一些查找数据,所以我执行以下操作:
public object LocationLookUps()
{
var locationTypes = ClientContext.LocationTypes;
var serviceCategories = ClientContext.ServiceCategories;
var serviceTypes = ClientContext.ServiceTypes;
var timeZones = ClientContext.TimeZones;
return new {locationTypes, serviceCategories, serviceTypes, timeZones};
}
稍后,在我的消费代码中,我想查询这些类型中的每一个,以检查给定的 locationType、timeZone 等是否是有效值。如果我返回了List<LocationType>,那么我可以这样查询:
var locationType = list.SingleOrDefault(t => t.LocationTypeCode = "B");
你可以对匿名类型做同样的事情吗?
【问题讨论】:
-
正如您在上述问题中看到的那样,您可以这样做,但我不建议这样做。刚刚创建了一个类,甚至使用了一个元组(可读性较差)。
-
从方法返回新的匿名类型实例通常没有用处。一个例外是调用者使用完全相同的匿名类型的通用方法(如果属性完全相同,编译器会将其设为相同类型),但这是一种非常不寻常的情况。如果您需要从方法返回对象的新实例,通常您应该只声明一个新的命名类型。你为什么不想在这里做呢?我闻起来像XY Problem。
标签: c# entity-framework linq anonymous-types