以下是我的课程和代码:
public class Properties
{
public string Prop1;
public string[] Prop2;
}
public IEnumerable<Properties> GetProperties()
{
string [] props = new[] { "abc", "xyz", };
for (int i = 0; i < 4; i++)
{
yield return new Properties { Prop1 = "Prop" + i, Prop2 = props};
}
}
var values = GetProperties().Select(x => new {
prop = x.Prop2.ToString()
}).ToList();
现在我希望我的值变量包含道具列表,但在这里我将道具作为数组,但我希望它作为单个字符串。
预期产出:
Values[0] : Name : abc
Values[1] : Name : xyz
如何使用linq执行此操作?
答案 0 :(得分:1)
试试这个:
public class Properties
{
public string Prop1;
public string[] Prop2;
}
public List<Properties> GetProperties()
{
var list = new List<Properties>();
var props = new[] { "abc", "xyz", }.toList();
props.ForEach(p=>{
var np = new Properties { Prop1 = "Prop" + i, Prop2 = props};
list.Add(np);
});
return list;
}
var values = GetProperties().Select(x => new {
prop = x.Prop2.ToString()
}).ToList();
答案 1 :(得分:1)
如果您希望为所有4个值编写此输出,则应使用SelectMany
:
var values = GetProperties().SelectMany(x => x.Prop2).ToList();
如果您希望获得您所写的确切输出,则应该只使用GetProperties()
的第一个值,而您不需要任何Select
:
var values = GetProperties().First().Prop2;