gpt4 book ai didi

c# - EF 获取 .include 的值

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:37 27 4
gpt4 key购买 nike

我的 DAL 层上有以下内容:

    public List<customer> SelectAll()
{
using (ubmmsEntities db = new ubmmsEntities())
{
var result = db.customers
.Include(p => p.project_codes)
.OrderBy(c=>c.customer_name)
.ToList();
return result;

}
}

基本上,这会向我返回一个客户列表及其各自的项目代码。使用返回的列表,我在我的 View 中填写了一个下拉列表:

        dropdown.DisplayMember = "customer_name";
dropdown.ValueMember = "id";
dropdown.DataSource = list;

这部分工作正常。但是我有第二个下拉菜单,用于显示基于从客户下拉菜单中选择的“customer_name”的项目代码

下面的代码过滤了我需要的第二个下拉列表的结果:

var projects = list.Where(x => x.id.Equals(ddlCustomer.SelectedValue)).ToList();

因此,projects 向我返回一个 count=1 的对象。在执行过程中,如果我将鼠标悬停在上面,我会得到 [0] {System.Data.Entity.DynamicProxies....}深入研究我得到项目代码列表(计数)。如果我再次向下钻取,我将获得实际列表,以及计划中来自 include 的信息。到目前为止一切顺利。

问题是我现在知道如何访问它们以便将项目代码添加到我的项目下拉列表中。

我试图设置 dropproject.DisplayMember = "project_name"(这是我想要达到的目的),但我所能得到的只是对象类型 {System. Data.Entity.DynamicProxies.... 而不是其实际成员的值。

现在,我知道我可以在我的 DAL 上创建一个方法来根据从下拉列表中选择的客户文本访问我的项目代码并快速排序,但是因为我知道我有一个已经包含我的客户的对象,他们的 ID 和项目代码,我想学习一种方法来将我的项目名称存储在我的项目代码表中。

它可能是 future 问题的解决方案......或者可能了解为什么我不应该这样做(我能想到它会导致性能问题的一些场景)

让我知道问题和信息是否足够,是否需要任何帮助?

最佳答案

由于您加载的客户包括项目,因此您无需使用查询来获取客户的项目。使用客户的 Projects 属性就足够了(或者它是什么复杂的属性,比如 project_codes):

var customer = (Customer)(customerComboBox.SelectetItem);
if(customer!=null)
{
var projects = customer.Projects.ToList();
//. . .
}

关于c# - EF 获取 .include 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995502/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com