System.Linq.Dynamic IEnumerable OrderBy

时间:2017-05-09 02:39:40

标签: ienumerable

threadgroupsPerGrid

Select Method返回IEnumerable类型,然后返回OrderBy,但抛出错误

“字符串”

类型中不存在任何属性或字段“名称”

1 个答案:

答案 0 :(得分:0)

您的代码有点不稳定,或者至少是不完整的,所以我无法弄清楚您在此代码段之外的内容。假设你有类似的东西:

class stu
{
    private int m_id;
    private string m_name;

    public int Id { get { return m_id; } set { m_id=value; } }
    public string Name { get { return m_name; } set { m_name=value; } }

    public stu(int id,string name)
    {
        m_id=id;
        m_name=name;
    }
}

在我看来,您的代码甚至无法在多个方面进行编译。这可能是因为我使用的是较旧的Visual Studio。为了编译这个,我改变了第一部分就像这样(你会注意到我混淆了alpha顺序以便让你看到排序实际发生了):

var list = new List<stu> 
{
    new stu(1,"123"),
    new stu(2,"f123"),
    new stu(3,"b123"),
    new stu(4,"e123"),
    new stu(5,"d123"),
    new stu(6,"c123"),
    new stu(7,"a123"),
};

之后,它会从您的代码中看起来好像您希望返回一个stu列表,但正在返回一个字符串列表。我在这里要做的是先排序列表,然后选择并返回一个排序的字符串列表。

var data = list.OrderBy(s => s.Name).Select(s => s.Name).ToList();
foreach(string str in data) { Console.WriteLine(str); }

如果您真正想要的选择是stu的排序列表,那么您可以像这样进行修改。

var data = list.OrderBy(s => s.Name);
foreach(stu s in data) { Console.WriteLine(s.Name); }

如果我错过了您的意图,请告诉我。