当前使用C#编码,我想知道是否有一种方法可以分解如下所示的代码
Entity1 = GetByName("EntityName1");
Entity2 = GetByName("EntityName2");
Entity3 = GetByName("EntityName3");
这个想法是在代码中获得一个调用,通过将entities
and和放置strings
在一个容器中并在该容器上进行迭代来获得GetByName()
一行代码,从而对代码进行分解。有没有办法做到这一点?
您可以使用LINQ:
var names=new[]{"EntityName1","EntityName2","EntityName3",.....};
var entities=names.Select(name=>GetByName(name)).ToArray();
不使用ToArray
,Select
将返回一个IEnumerable,该值将在您每次枚举时重新进行赋值-也就是说,GetByName
每次枚举该枚举时都会被调用。
ToArray()
或ToList
将创建一个可以多次使用的数组(或列表)。
ToDictionary
如果您希望能够通过名称访问实体,也可以致电:
var entities=names.ToDictionary(name=>name,name=>GetByName(name));
所有这些都假定实体不存在,或者GetByName
必须做一些重要的工作才能检索它们。如果实体存在,您只需将它们放入中Dictionary<String,Entity>
。如果实体具有Name
属性,则可以ToDictionary
在一个语句中用于创建字典:
var entities=new []{entity1,entity2,entity3,...};
var entitiesDict=entities.ToDictionary(entity=>entity.Name,entity=>entity);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句