我定义了以下简单的“教科书”类:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
Product中的Category字段是引用Category类中Id字段的整数。在数据库中,它将是Product和Category表之间的外键关系。
但是我的申请需要显示产品类别的友好名称。
Q1 :按照以下方式定义新类是正确的做法:
public class ProductJ : Product
{
public string CategoryName { get; set; }
}
然后,如果我现在有一个方法getProductsJ如下:
public class Test
{
public List<Category> Categories = new List<Category>() { ... };
public List<Product> Products = new List<Product>() { ... };
public List<ProductJ> getProductsJ()
{
var products = from p in Products
join c in Categories on p.Category equals c.Id
select new ProductJ { Id = p.Id, , Name = p.Name, CategoryName = c.Name }; //!
return products.ToList();
}
}
Q2 :以上是检索具有类别名称的产品列表的最佳方法吗?
Q3 :在select语句中(//!)是否有更快的方法来填充基类Product linq的字段而不必逐个输入?
感谢。
答案 0 :(得分:1)
您可以将连接的结果投影到包含对产品和类别的引用的对象中。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Category { get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ProductCategory
{
public Product Product { get; set; }
public Category Category { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Category> Categories = new List<Category>();
List<Product> Products = new List<Product>();
var products = from p in Products
join c in Categories on p.Category equals c.Id
select new ProductCategory { Product = p, Category = c };
var list = products.ToList();
}
}
答案 1 :(得分:0)
每本书是属于一个类别,还是属于您的案例中属于多个类别?因为如果一本书属于一个类别,那么您只需在书籍表中移动类别名称即可。我也建议看看