C# .net集合优化

C# .net集合优化,c#,.net,collections,C#,.net,Collections,我对.Net收藏不是很有经验 这里有我想重写的代码 emptyOrganization.Name = ""; var organizations = new List<IOrganization>(); organizations.Add(emptyOrganization); organizations.AddRange(_organizationRepository.GetAll(LanguageCurrent.Id)); model.Organizations = organi

我对.Net收藏不是很有经验

这里有我想重写的代码

emptyOrganization.Name = "";
var organizations = new List<IOrganization>();
organizations.Add(emptyOrganization);
organizations.AddRange(_organizationRepository.GetAll(LanguageCurrent.Id));
model.Organizations = organizations;
可以用更少的行重写吗?

我假设emptyOrganization是一个IOrganization,GetAll返回一个IEnumerable或类似的东西

您的代码已经很高效了,但是您可能想让它更清晰。您可以使用:

model.Organizations = new[] { emptyOrganization }
    .Concat(_organizationRepository.GetAll(LanguageCurrent.Id))
    .ToList();
如果您经常发现自己需要一个集合,该集合是一个值后跟另一个集合中的值,则始终可以为此编写扩展方法:

public static IEnumerable<T> Prepend(this IEnumerable<T> source, T value)
{
    yield return value;
    foreach (var item in source)
    {
        yield return item;
    }
}

。。。这也许是最具表现力的形式。Prepend也是的一部分,所以实际上您不必自己编写它…

如果您真的想使用一行程序,您可以使用LINQ:

model.Organizations = new IOrganization[]{ emptyOrganization }
.Concat(_organizationRepository.GetAll(LanguageCurrent.Id))
.ToList();

但你为什么要这样?您的代码可读且高效。

不使用Linq,您可以通过使用空组织初始化集合来保存一行:

var organizations = new List<IOrganization> {emptyOrganization};
organizations.AddRange(_organizationRepository.GetAll(LanguageCurrent.Id));

为什么要少排队?写可读的代码——不管你做什么,不要数行。你对它的现状有什么担心?它本身并没有什么问题。你的每一行都实现了一个特定的目标。行数越少并不意味着代码越好。我唯一能想到的就是使用列表实例化器。@AlexK。我怀疑有一个干净的LINQ解决方案。是的。我只是喜欢林克的方式。我想了解更多细节。
var organizations = new List<IOrganization> {emptyOrganization};
organizations.AddRange(_organizationRepository.GetAll(LanguageCurrent.Id));