标题可能令人困惑。但在这里,我将提供问题的完整图片。 我的回复是集体成员的集合。
public class Member
{
public int Identifier {get;set;}
public IEnumerable<string> Services {get;set}
}
在服务中我得到一些字符串形式的固定数值(如1,3,5,6,9),如下所述
Member m1= new Member();
m1.Services= new List<string>() {"1","3"}
Member m2= new Member();
m2.Services= new List<string>() {"5","9"}
我有一个枚举,它有一些与这些固定数值相对应的值,如下所述
public enum ServiceValues
{
ABC=1,
CDE=3,
DEF=5,
GHI=6,
XYZ=9,
}
所以在m1.Services中我想返回{&#34; ABD&#34;,&#34; CDE&#34;}并在m2.Services中我想返回{&#34; DEF&#34;, &#34; XYZ&#34;}
虽然我知道一些肮脏的方式,但我想以最好的方式实现这一目标。
答案 0 :(得分:2)
如果匿名类型对您来说足够好,并且假设您希望返回同时具有Identifier
和Services
列表的对象,则可以执行以下操作:
private Services ToService(string str)
{
return (Services)Enum.Parse(typeof(Services), str);
}
...
var result = members.Select(member => new
{
member.Identifier,
Services = members.Services.Select(ToService)
});
答案 1 :(得分:-1)
您应该能够Enum.TryParse
string
集合中的值,然后使用生成的Services
枚举值来获取文字名称。有点像:
var members = GetCollectionOfMember();
foreach(var member in members)
{
foreach(var serviceString in member.Services)
{
Services service;
if(Enum.TryParse<Services>(serviceString, out service))
{
var serviceName = service.ToString();
}
}
}