我在Entity Framework 5.0中创建了一些表,并从中生成了一个SQL Server数据库。表格如下:
Title (TitleId, TitleName, TitlePrice, ISBN...)
Author (AuthorId, FirstName, LastName)
Category (CategoryId, CategoryName)
标题和作者以及标题和类别之间的关系是多对多的。
现在,我可以访问每个标题分配的类别以及作者对标题的贡献。
//for authors
var queryAuthList = from au in ebs.Authors
from t in au.Titles
where t.TitleId == TitleId
select new
{
Name = string.Concat(au.FirstName, " ", au.LastName)
};
//for categories
var queryCatList = from cat in ebs.Categories
from t in cat.Titles
where t.TitleId == TitleId
select new
{
cat.CategoryName
};
现在,如何在简单的文本标签中显示queryAuthList或queryCatList的内容?
我希望输出与作者的AuthorA, AuthorB, AuthorC
类似,对于分配给单个标题的类别,我希望CategoryX, CategoryY, CategoryZ
。
我尝试声明List<String>
并在foreach
循环中将项添加到列表中,然后使用String.Join(",",strList)
打印列表。但输出显示为
{Name = AuthorA}, {Name = AuthorB}, {Name = AuthorC}
{CategoryName = CategoryX}, {CategoryName = CategoryY}, {CategoryName = CategoryZ}
答案 0 :(得分:0)
您看到的{Name = AuthorA}
是匿名类型的默认ToString()
。
你不想要那样,所以不要用匿名类型包装它:
var queryAuthList = from au in ebs.Authors
from t in au.Titles
where t.TitleId == TitleId
//select new
//{
// Name = string.Concat(au.FirstName, " ", au.LastName)
//};
select string.Concat(au.FirstName, " ", au.LastName);
由于queryAuthList
现在是IEnumerable<string>
,
string result = String.Join(",", queryAuthList);