在 C# 中将 List<String> 转换为 String

List<String> to String in C#

我在 Entity Framework 5.0 中创建了一些表并从中生成了一个 SQL 服务器数据库。表格如下:

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}

您看到的 {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);