C# 如何使用LINQ(实体)从多个表中选择数据

C# 如何使用LINQ(实体)从多个表中选择数据,c#,linq,entity-framework,C#,Linq,Entity Framework,我有两个表和对应的LINQ实体 产品 命令 订单在数据库中有一个fk_product_id,该id链接到表product中的pk_product_id 如何编写从两个表返回数据的方法,以便将其连接到repeater或gridview 我找到了人们编写联接的示例,但我想知道这是否真的有必要。您可以将两个不同对象中的字段展平为新的“展平”匿名类型 您可以将两个不同对象中的字段展平为新的“展平”匿名类型 使用LINQ,您可以执行以下操作: var results = from o in Order

我有两个表和对应的LINQ实体

  • 产品
  • 命令
订单在数据库中有一个fk_product_id,该id链接到表product中的pk_product_id

如何编写从两个表返回数据的方法,以便将其连接到repeater或gridview


我找到了人们编写联接的示例,但我想知道这是否真的有必要。

您可以将两个不同对象中的字段展平为新的“展平”匿名类型

您可以将两个不同对象中的字段展平为新的“展平”匿名类型

使用LINQ,您可以执行以下操作:

var results = from o in Order
              select new
              {
                  order = o,
                  product = o.Product
              };
<asp:Label Text='<%# Eval("product.Name") %>' />
然后将其作为数据源提供给中继器,然后通过ItemTemplate或类似的方式访问它:

var results = from o in Order
              select new
              {
                  order = o,
                  product = o.Product
              };
<asp:Label Text='<%# Eval("product.Name") %>' />

使用LINQ,您可以执行以下操作:

var results = from o in Order
              select new
              {
                  order = o,
                  product = o.Product
              };
<asp:Label Text='<%# Eval("product.Name") %>' />
然后将其作为数据源提供给中继器,然后通过ItemTemplate或类似的方式访问它:

var results = from o in Order
              select new
              {
                  order = o,
                  product = o.Product
              };
<asp:Label Text='<%# Eval("product.Name") %>' />

使用db.orders.include(“产品”).all(); 在订单类中定义产品实体时…

使用db.orders.include(“产品”).all();
虽然您在order类中定义了产品实体…

谢谢,但我得到了一个类似以下形式的错误:ataBinding:'f_uuanonymoustype0`2[[DAL.order,App_Code.1lysc8mu,Version=0.0.0,Culture=neutral,PublicKeyToken=null],[DAL.product,App_Code.1lysc8mu,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null]]'不包含名为'product_name'的属性。根据您生成数据模型的方式,您可以检查生成的.edmx文件,并找出该属性的名称。该属性是以我的数据库列名“product_name”命名的。明白了!它显示在我的中继器中,但gridview是空的。知道为什么吗?不知道,我没用过GridView。请检查是否可以使用ListView或其他控件显示它。谢谢,我收到一个类似以下格式的错误:ataBinding:'f_uuanonymoustype0`2[[DAL.Order,App_Code.1lysc8mu,Version=0.0.0,Culture=neutral,PublicKeyToken=null],[DAL.Product,App_Code.1lysc8mu,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null]]'不包含名为'product_name'的属性。根据您生成数据模型的方式,您可以检查生成的.edmx文件,并找出该属性的名称。该属性是以我的数据库列名“product_name”命名的。明白了!它显示在我的中继器中,但gridview是空的。知道为什么吗?不知道,我没用过GridView。检查是否可以使用ListView或其他控件显示它。