如何更有效地重写它(使用拆分的linq)?
问题是: 我有一个专栏,主题是:“波士顿|纽约|芝加哥”。记录中的名称可以不同,主题的数量也可以不同。 我需要做的是收集相同的名字和这些名字的数量 这就是我所做的:如何更有效地重写它(使用拆分的linq)?,linq,simplify,Linq,Simplify,问题是: 我有一个专栏,主题是:“波士顿|纽约|芝加哥”。记录中的名称可以不同,主题的数量也可以不同。 我需要做的是收集相同的名字和这些名字的数量 这就是我所做的: var splitted = queryResult.Select(x => x.TopicData); List<string> lstOfTopics = new List<string>(); foreach (var element in splitted) { string[]
var splitted = queryResult.Select(x => x.TopicData);
List<string> lstOfTopics = new List<string>();
foreach (var element in splitted)
{
string[] splitedTopics = element.Split('|');
lstOfTopics.AddRange(splitedTopics);
}
var groupedTopics = lstOfTopics.GroupBy(x => x).Select(group => new {key = group.Key, count = group.Count()}).AsEnumerable();
var splitted=queryResult.Select(x=>x.TopicData);
List lstOfTopics=新列表();
foreach(拆分中的var元素)
{
string[]splitedTopics=element.Split(“|”);
lstOfTopics.AddRange(splitedTopics);
}
var groupedTopics=lstOfTopics.GroupBy(x=>x).Select(group=>new{key=group.key,count=group.count()}).AsEnumerable();
对于一个简单的任务,似乎有很多代码。有没有办法简化这个
谢谢 您可以使用
SelectMany
和ToList
构建列表:
List<string> lstOfTopics = splitted.SelectMany(x => x.Split('|')).ToList();
您可以使用
SelectMany
和ToList
构建列表:
List<string> lstOfTopics = splitted.SelectMany(x => x.Split('|')).ToList();
查询语法可以非常简洁:
var topics =
from qr in queryResult
from topic in qr.TopicData.Split('|')
group topic by topic into g
select new { Topic = g.Key, Count = g.Count() };
如果你只想要独特的主题,而不是它们的数量
List<string> topicList = topics.Select(item => item.Topic);
List-topicList=topics.Select(item=>item.Topic);
查询语法可以非常简洁:
var topics =
from qr in queryResult
from topic in qr.TopicData.Split('|')
group topic by topic into g
select new { Topic = g.Key, Count = g.Count() };
如果你只想要独特的主题,而不是它们的数量
List<string> topicList = topics.Select(item => item.Topic);
List-topicList=topics.Select(item=>item.Topic);
是否需要修剪空白?是否需要修剪空白?