Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该重新使用我的EF查询方法吗?如果是,如何使用_C#_Winforms_Entity Framework - Fatal编程技术网

C# 我应该重新使用我的EF查询方法吗?如果是,如何使用

C# 我应该重新使用我的EF查询方法吗?如果是,如何使用,c#,winforms,entity-framework,C#,Winforms,Entity Framework,我使用EF从MySQL数据库中获取数据 现在,我有两个表,第一个是客户和项目代码 表project_代码有一个FK到名为id_customers的客户。通过这种方式,我可以查询哪些项目属于客户 在我的DAL中,我得到以下信息: public List<customer> SelectAll() { using (ubmmsEntities db = new ubmmsEntities()) { var result = db.customers

我使用EF从MySQL数据库中获取数据

现在,我有两个表,第一个是客户和项目代码

表project_代码有一个FK到名为id_customers的客户。通过这种方式,我可以查询哪些项目属于客户

在我的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;

    }
}
这向我输出了该客户的项目代码,但我尝试了不同的方法(foreach,whhere和其他一些随机方法),但它们要么语法失败,要么没有向我输出包含所有项目代码的列表。这就是我用一种特殊方法获取项目代码的另一个原因

即使“常识”或最佳实践表明,重复使用上述方法是一个坏主意,我想了解一些关于如何使用
SelectAll()
返回实现项目代码列表的指导。。。永远不知道什么时候它会到来


让我知道你的想法。

这里有一个权衡;您可以在内存中的集合上迭代较大的集合(并执行选择等),也可以迭代较小的集合,但必须转到数据库才能执行

您需要分析您的设置以确定哪个更快,但完全有可能内存中的方法会更好(尽管如果您的数据可能已更改,则会过时!)

要获取所有项目代码,您只需:

List<customer> customers; //Fill from DAL
List<project_code> allProjects = customers.SelectMany(c => c.project_codes).ToList();
列出客户//从DAL填充
列出所有项目=客户。选择多个(c=>c.project_代码)。ToList();

请注意,我使用了
SelectMany
来扁平化集合的层次结构,我不认为
SelectAll
实际上是一种LINQ方法。

它是一个小集合,而这个集合位于快速服务器上。还有一个也是小的(2K行),但是服务器过载,需要4到5秒才能返回。就我计划的用途而言,这应该不是问题。至于如何选择项目,我很恼火。。。我确信我尝试了
List projects=UBMMSController.getallcustomersquenceload()。选择了许多(c=>c.project\u code)。ToList()这与您所做的相同,但不起作用。。。现在它做到了。。。很可能当时我错过了什么。谢谢。@EstevaoSantiago很乐意帮忙:)
List<customer> customers; //Fill from DAL
List<project_code> allProjects = customers.SelectMany(c => c.project_codes).ToList();