LinqToSQL加入什么类型作为List上的返回

时间:2015-07-21 15:06:46

标签: c#

我在下面加入了连接,我将返回什么类型/类来保留所有属性?这是NorthWind数据库,我认为大多数人都熟悉它。

         var q =
               from a in db.GetTable<Order_Detail>()
               join b in db.GetTable<Product>() on a.ProductID equals b.ProductID
               select a;

2 个答案:

答案 0 :(得分:2)

您要做的是创建一个新的匿名类型以返回两个值:

var q =
    from a in db.GetTable<Order_Detail>()
    join b in db.GetTable<Product>() on a.ProductID equals b.ProductID
    select new 
    { 
        Order = a, 
        Product = b 
    };

请注意,如果正确设置了外键,则根本不需要进行显式连接。您应该能够说Order_Detail.Products来获取Order_Detail中的Product

答案 1 :(得分:2)

您有两个选择,您可以选择anonymous type,就像这样

 var q =
               from a in db.GetTable<Order_Detail>()
               join b in db.GetTable<Product>() on a.ProductID equals b.ProductID
               select new { a, b };

这将为您提供一个q对象ab,例如,您可以这样做:

q.a.SomeOrderInformation

q.b.SomeProductInformation

或者你可以把它选成一个类。

使用您想要的字段创建一个新类:

public class MyNewClass {
   public string MyOrderProperty {get; set;}
   public string MyProductProperty {get; set;}
}

然后用:

填充它
 var q =
               from a in db.GetTable<Order_Detail>()
               join b in db.GetTable<Product>() on a.ProductID equals b.ProductID
               select new MyNewClass { MyProductProperty = b.ProductId, MyOrderProperty = a.OrderName };

更改字段/类名以使其适合我只是因为我无法访问northwind。