从EntitySet <t> </t>中拉出逗号分隔的字符串

时间:2012-05-08 21:13:53

标签: c# .net string linq linq-to-sql

如何将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
                            });

3 个答案:

答案 0 :(得分:2)

您必须从tblCaseNoteContactTypes中选择要连接的列

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

答案 1 :(得分:1)

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

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

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

String.Join(string, object[])

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

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

答案 2 :(得分:0)

检查是否为空?

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

此外,

tblCaseNoteContactTypes

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