Ale*_*ann 0 .net c# collections
我在.Net Collections中并不是很有经验.
在这里,我有一些我想以某种方式重写的代码.
emptyOrganization.Name = "";
var organizations = new List<IOrganization>();
organizations.Add(emptyOrganization);
organizations.AddRange(_organizationRepository.GetAll(LanguageCurrent.Id));
model.Organizations = organizations;
Run Code Online (Sandbox Code Playgroud)
可以用更少的行重写吗?
(我假设那emptyOrganization是一个IOrganization并GetAll返回一个IEnumerable<IOrganization>类似的东西......)
您的代码已经很有效,但您可能希望尝试使其更清晰.你可以使用:
model.Organizations = new[] { emptyOrganization }
.Concat(_organizationRepository.GetAll(LanguageCurrent.Id))
.ToList();
Run Code Online (Sandbox Code Playgroud)
如果您经常发现自己想要一个集合,该集合是一个值,后跟另一个集合中的值,您可以随时为此编写扩展方法:
public static IEnumerable<T> Prepend(this IEnumerable<T> source, T value)
{
yield return value;
foreach (var item in source)
{
yield return item;
}
}
Run Code Online (Sandbox Code Playgroud)
那你就得:
model.Organizations = _organizationRepository.GetAll(LanguageCurrent.Id)
.Prepend(emptyOrganization)
.ToList();
Run Code Online (Sandbox Code Playgroud)
......这可能是最具表现力的形式.(Prepend也是MoreLINQ的一部分,所以你实际上不必自己编写......)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |