繁体   English   中英

如何使用 EF 从导航属性中仅选择特定列

[英]How to select only particular columns from navigation properties using EF

我试图从导航属性中只选择 2 列,但无法做到,谁能告诉我如何实现这一点?

它的默认方式很好(选择所有列):

  var productreceipts = db.productreceipts.Include(p => p.employee).Include(p => p.productmaster).Include(p => p.vendor);

我想要的是:

仅从员工、产品主管、供应商表中的每个表中选择 2 列。

如果我只有一张桌子,我知道如何选择:

var productreceipt = db.productreceipts.Select(p => new { p.ReceiptId, p.ReceivedBy });

编辑:我想选择第一个表(产品收据)的所有属性,并且只从其他表中选择一些。

任何帮助都感激不尽。

提前致谢。

你可以使用像:

  var productreceipts = db.productreceipts.Include(p => p.employee).
                                          .Select(p => new { propertyName = p.productmaster.SomeProperty })

尝试这个:

var productreceipt = db.productreceipts
    .Select(p => 
    new {   productreceipts_prop_1 = p.productreceipts_prop_1,
            productreceipts_prop_2 = p.productreceipts_prop_2,
            productreceipts_prop_3 = p.productreceipts_prop_3,
            productreceipts_prop_4 = p.productreceipts_prop_4,

            employee_prop_1 = p.employee.employee_prop_1,
            employee_prop_2 = p.employee.employee_prop_2,

            productmaster_prop_1 = p.productmaster.productmaster_prop_1,
            productmaster_prop_2 = p.productmaster.productmaster_prop_2,

            vendor_prop_1 = p.vendor.vendor_prop_1,
            vendor_prop_1 = p.vendor.vendor_prop_1,
    });

编辑:

不需要使用.Include()就可以直接使用 navigator 属性来检索数据。

如果您启用了延迟加载,则可以直接使用

.Select(p => new { ProductId = p.productmaster.ProductId }

否则,您将必须采用内部联接并在单选中选择单个列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM