【发布时间】:2017-11-08 21:40:21
【问题描述】:
在使用 LINQ to Entities 时,有没有办法在其他选择语句中重用一个选择语句块?
例如,在下面的代码中,我使用 LINQ 从我的数据库中选择一个客户设备对象。我还从连接到客户设备表的表中选择了一个相关的模型对象。
list = context.PTT_CUSTOMER_DEVICES
.Include(...)
.Select(d => new CustomerDevice
{
customerAssetTag = d.CustomerAssetTag,
customerDeviceID = d.CustomerDeviceID,
//This section is used in several LINQ statements throughout the application.
Model = new Model()
{
ModelID = d.PTS_MODELS.ModelID,
Name = d.PTS_MODELS.Name,
Make = new Make()
{
MakeID = d.PTS_MODELS.PTS_MAKES.MakeID,
Name = d.PTS_MODELS.PTS_MAKES.Name
}
}
})...
但是,数据库中还有其他对象也引用了 Model 表。在我对那些其他表的选择语句中,我基本上将相同的 Model = new Model() 代码复制到了这些不同表的选择语句中。
我想知道的是,是否可以在多个选择中存储和重用该代码块?可能使用扩展方法?
【问题讨论】:
-
您将 lambda 传递给该 Select,您可以将其存储在变量中并重用。您还可以将模型部分保存到函数中并将所需的所有内容作为参数传递给它,您还可以通过 Automapper 或类似工具在变量
d和CustomerDevice或Model之间创建映射,并使用映射那个。
标签: c# entity-framework linq linq-to-sql linq-to-entities