Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更有效地重写它(使用拆分的linq)?_Linq_Simplify - Fatal编程技术网

如何更有效地重写它(使用拆分的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);

是否需要修剪空白?是否需要修剪空白?