我有这样的课程Category
:
public int id { get; set; }
public string catName { get; set; }
public List<string> subCat { get; set; }
我有2个表,tblCategory
和tblSubCategory
。
我想选择每个类别下的所有类别和子类别。我正在尝试下面的代码,但我得到了所有类别的相同结果,即使某些类别没有任何子类别,他们仍然获得子类别的漏洞列表。
非常感谢任何帮助。
public static List<Category> getCategoryList()
{
try
{
using (var db = new LinqToDBAwkoDataContext())
{
var list = from c in db.tblCategories
select new Category
{
id = c.CatId,
catName = c.CatName,
subCat = subCategoriesByCatId(db)
};
return list.ToList();
}
}
catch (Exception ex)
{
throw new Exception("An error has occurred");
}
}
private static List<string> subCategoriesByCatId(LinqToDBAwkoDataContext db)
{
var list = from s in db.tblSubCategories
join c in db.tblCategories on s.CatId equals c.CatId
where s.CatId == c.CatId
select s.SubCatName;
return list.ToList();
}
答案 0 :(得分:1)
你有一些错误。首先,在subCategoriesByCatId
方法中选择所有类别和子类别。您必须将CatId
传递给此方法。但随后它会产生一个子查询。我不认为你想要那个。使用简单的连接。其次,您使用ToList
方法调用subCategoriesByCatId
。这导致Categories
表中每行的数据库往返。
public static List<Category> getCategoryList()
{
try
{
using (var db = new LinqToDBAwkoDataContext())
{
var list = from c in db.tblCategories
join s in db.tblSubCategories
select new Category
{
id = c.CatId,
catName = c.CatName,
subCat = s.SubCatName
};
return list.ToList();
}
}
catch (Exception ex)
{
throw new Exception("An error has occured");
}
}