无法将类型'string'隐式转换为'System.Collections.Generic.List <string>'

hsi*_*sim 8 c# string list

这个问题可能已经被回答了数百次,但是这里有.

我有这个代码块:

private void PopulateStringDropdownList(List<ObjectInfo> listObject,
                                        object selectedType = null)
{
    List<string> listString = listObject.OrderBy(x => x.m_Type).ToString();
    for (int i = 0; i < listString .Count; i++)
    {
        for (int j = i + 1; j < listString .Count; j++)
        { 
            if (String.Equals(listString [i], listString [j]))
            {
                listString.RemoveAt(j);
            }
        }
    }
    ViewBag.property1 = new SelectList(listString );
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在尝试使用来自参数中传递的列表中包含的每个对象的属性的字符串来填充下拉列表.

但是由于你在那里看到的错误,代码无法编译,我还没理解为什么.有人帮忙吗?

Fis*_*rdo 12

这是有问题的一行:

List<string> listString = listObject.OrderBy(x => x.m_Type).ToString();
Run Code Online (Sandbox Code Playgroud)

ToString返回一个字符串,并且您尝试分配给List<string>变量.

你需要做这样的事情:

List<string> listString = listObject.OrderBy(x => x.m_Type)
                                    .Select(x => x.ToString())
                                    .ToList();
Run Code Online (Sandbox Code Playgroud)

这个语句会将你的listObject枚举命令为你想要的顺序,然后将值转换为字符串,最后将枚举转换为a List<string>.


Jon*_*eet 5

看看这段代码:

List<string> listString = listObject.OrderBy(x => x.m_Type).ToString();
Run Code Online (Sandbox Code Playgroud)

右侧表达式调用ToString()结果OrderBy- 这本身没有用,并且会产生一个string.

然后,您尝试将该string表达式分配给类型的新变量List<string>.那不行.

怀疑你只想要ToList而不是ToString:

List<string> listString = listObject.OrderBy(x => x.m_Type).ToList();
Run Code Online (Sandbox Code Playgroud)