【发布时间】:2018-05-09 23:35:46
【问题描述】:
我有多个string[],它们的定义如下:
var allEntities = new[] { "a", "b", "c", "d", "e", "f", "g", "h", "i" }
var entitiesWithPriority = new[] { "c", "d", "g" }
var entitiesWithIssue = new [] { "d", "h", "i" }
var entitiesWith... = new [] { ... }
现在我想使用以下类结构从这些数组中编译一个列表:
class Entity {
public string Name { get; set; }
public bool HasPriority { get; set; }
public bool HasIssue { get; set; }
}
因此,操作的结果应该是这样的:
[
{ "name": "a", "hasPriority": false, "hasIssue": false }
{ "name": "b", "hasPriority": false, "hasIssue": false }
{ "name": "c", "hasPriority": true, "hasIssue": false }
{ "name": "d", "hasPriority": true, "hasIssue": true }
{ "name": "e", "hasPriority": false, "hasIssue": false }
{ "name": "f", "hasPriority": false, "hasIssue": false }
{ "name": "g", "hasPriority": true, "hasIssue": false }
{ "name": "h", "hasPriority": false, "hasIssue": true }
{ "name": "i", "hasPriority": false, "hasIssue": true }
]
我可以在下面的代码行中做一些事情,但我认为这个解决方案一点也不完美:
var result = allEntities.Select(entityName => new Entity()
{
Name = entityName,
HasPriority = entitiesWithPriority.Contains(entityName),
HasIssue = entitiesWithIssue.Contains(entityName)
});
如何在提高性能的同时编译这样的列表。
【问题讨论】:
-
“巨大的性能问题”?您最终将获得多少百万个实体?
-
@Blorgbeard 我最终可能会收到大约 10.000 到 100.000 个条目。问题是,每个
Contains或Any调用都会遍历整个列表,所以我正在寻找一个好的解决方案。顺便说一下,上面描述的问题只是一个简化的例子。问题可能不是条目数量,而是调用次数。我生成了大约 10 到 50 个这样的数组组合。
标签: c# arrays performance linq sorting