在C#中将<string>列出为String

时间:2015-07-14 18:23:48

标签: asp.net linq entity

我在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}

1 个答案:

答案 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);