从 EntitySet 中提取逗号分隔字符串

本文关键字:分隔 字符串 提取 EntitySet | 更新日期: 2023-09-27 18:33:38

如何将EntitySet<>转换为字符串? 即(鲍勃、乔、弗兰克(?

在下面的 LINQ ContactType中,有一个单独的表,可以有多个值。 我正在尝试将其转换为逗号分隔的字符串。

var caseNotes =context.tblCaseNotes
                .Where(cn => cn.PersonID == personID)
                .OrderBy(cn => cn.ContactDate)
                .Select(cn => new
                            {
                                cn.ContactDate,
                                cn.ContactDetails,
                                cn.TimeSpentUnits,
                                cn.IsCaseLog,
                                cn.IsPreEnrollment,
                                cn.PresentAtContact,
                                ContactType = string.Join(", ", cn.tblCaseNoteContactTypes.ToArray()),
                                cn.InsertDate,
                                cn.InsertUser,
                                cn.CaseNoteID,
                                cn.ParentNote
                            });

从 EntitySet<T> 中提取逗号分隔字符串

您必须

tblCaseNoteContactTypes中选择要连接的列

 ContactType = string.Join(", ", 
         cn.tblCaseNoteContactTypes.Select(x => x.MyColumn))

LINQ 查询的末尾追加.ToArray();,并将其用作String.Join()的参数

String.Join(", ", yourLinqQuery.ToArray());

为此,LINQ 查询必须返回一个字符串,以便 Array 是字符串数组。或者具有与所需内容匹配的ToString()的对象。

String.Join(string, object[](

编辑:当您添加新信息时:

如果 tblCaseNotesContactType 是一个对象,则需要在.ToArray()之前添加一个.Select(t -> {return t converted to string})

检查是否为空?

ContactType = cn.tblCaseNoteContactTypes.Any() ? string.Join(", ", cn.tblCaseNoteContactTypes.ToArray()) : String.Empty

tblCaseNoteContactTypes

如果此集合的成员不是字符串,Join会遇到一些麻烦。