无法基于类

时间:2016-12-30 15:39:09

标签: c# .net linq

以下是我的课程和代码:

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执行此操作?

2 个答案:

答案 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;