在这种情况下,文本的来源来自一个 winforms 文本框。我要求这个主要是为了了解更多关于 LINQ 的信息,也许是为了展示它的力量(在我看来,比循环更容易阅读)。这个程序有几个要求;该函数必须从文本框中获取文本,将其拆分为单独的行,删除空行和/或重复行,并修剪行。
这些是唯一的方法吗?在 C# 中是否有其他方法(除了循环遍历行列表并将符合条件的项目添加到新列表、数组等)?
1:
List<String> listOne = textBoxWords.Text
.Split(new char [] { '\r', '\n' })
.Select(s1 => s1.Trim())
.Where(s2 => !String.IsNullOrEmpty(s2))
.Distinct()
.ToList();
2:
List<String> listTwo = textBoxWords.Text
.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s1 => s1.Trim())
.Distinct()
.ToList();
更新:建议使用此代码,但仅在不需要修剪字符串时才有效。
3:
List<String> listThree = textBoxWords.Text
.Split(new char[] { '\r', '\n' },
.Where(s1 => !String.IsNullOrWhiteSpace(s1))
.Distinct()
.ToList();
我知道它 a) 相当具体,b) 使用 DataGrid 可能更容易实现,但我维护的代码使用文本框,我不想立即重写它们。