为什么此String.Join中排除了分隔符?C#



我有一个用于绑定的ObservableCollection<T>,我想把它放入String.Join语句中,但我不明白它为什么会给出我得到的结果,以及如何修复它?

这是我用来得到结果的代码,

首先,我通过这个LINQ查询获得我需要的数据

public static IEnumerable<string> GetNursingHomeNames(string home)
{
return DataContext.NursingHomeNameServerTables.Where(p => p.Nursing_Home_Section == home)
.Select(p => p.Nursing_Home_Name).Distinct();
}

然后我将其放入ObservableCollection<T>中(您可能想知道为什么我没有将ObservableCollection<T>与LINQ查询一起使用,但我有自己的原因。)

public static void NursingHomeNamesCollection(ObservableCollection<string> nursingHomeNames, string nursingHomeSection)
{
var homeNames = GetNursingHomeNames(nursingHomeSection);
if (homeNames == null)
{
return;
}
foreach (var item in homeNames)
{
nursingHomeNames.Add(item);
}
}

这是主窗口中的属性

public ObservableCollection<string> NursingHomeNames { get; set; } =
new ObservableCollection<string>(); 

然后

然后我使用Join来获得我需要的特定目的的结果,

var result = String.Join(@",", NursingHomeNames.ToList());

这给出了以下结果,其中没有分隔符,只有一个空间,

foo bar bat baz

然而,如果只是这样做,

ObservableCollection<string> observableCol = new ObservableCollection<string>() { "foo", "bar", "bat", "baz" };
var result = String.Join(@",", observableCol.ToList());

显示的结果带有适当的分隔符。

foo,bar,bat,baz

为什么要这样做,有没有办法确保分隔符正确放置

我知道我必须遵守我的命名惯例。

编辑:在调试器中,这就是我所看到的,

将集合分配给名为data的变量并在Watch Window中查看结果时

var data = NursingHomeNames.ToList();

Count=4

[0]"foo">

[1] "条形">

[2] "蝙蝠">

[3] "baz">

但是,我不能使用任何其他不使用从数据库中提取数据的LINQ查询的代码来重现这一点。我尝试制作一个新的列表,并通过相同的代码传递该列表,但没有出现错误。很抱歉,我不能发布一个可以复制的例子。

事实证明,经过数周的努力,@Panagiotis Kanavos和@CodeCaster做出了评论。

我使用了一个看起来像逗号的Unicode字符,因此它创建了一个与我预期不同的行为。

在方法中

public static void NursingHomeNamesCollection(string nursingHomeSection)

您可以输入字符串参数。在此方法作用域中之后,您将此字符串添加到静态集合中,但此作用域中的字符

foreach (var item in homeNames)

您正试图一次添加一个字符并连接一个大字符串。您需要获取该方法的输入集合。

最新更新