不能将类型“字符串”隐式转换为“System.Collections.Generic.List”
本文关键字:字符串 Generic Collections List System string 转换 类型 不能 | 更新日期: 2023-09-27 17:56:58
这个问题可能已经被回答了数百次,但在这里。
我有这么一堆代码:
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 );
}
所以基本上我正在尝试使用来自我传入参数的列表中包含的每个对象的属性的字符串填充下拉列表。
但是由于您在那里看到的错误,代码无法编译,我还没有弄清楚为什么。有人帮忙吗?
这是有问题的行:
List<string> listString = listObject.OrderBy(x => x.m_Type).ToString();
ToString
返回一个字符串,并且您正在尝试分配给List<string>
变量。
你需要做这样的事情:
List<string> listString = listObject.OrderBy(x => x.m_Type)
.Select(x => x.ToString())
.ToList();
此语句将按所需的顺序对可枚举listObject
进行排序,然后将值转换为字符串,最后将可枚举值转换为List<string>
。
看看这段代码:
List<string> listString = listObject.OrderBy(x => x.m_Type).ToString();
右侧表达式在OrderBy
的结果上调用ToString()
- 这本身没有用,并且会导致string
。
然后,您将尝试将该string
表达式分配给类型为 List<string>
的新变量。这是行不通的。
我怀疑你只是想要ToList
而不是ToString
:
List<string> listString = listObject.OrderBy(x => x.m_Type).ToList();
我认为你想要ToList
而不是ToString
.
此外,如果您尝试执行的只是删除重复项,则只需使用 LINQ 并执行以下操作:
List<string> listString = listObject.OrderBy(x => x.m_Type).
Select(x => x.ToString()).Distinct().ToList();
您可以将
所有代码简化为:
List<string> listString = listObject.OrderBy(x => x.m_Type)
.Select(x => x.ToString())
.Distinct() // Remove duplicated entries
.ToList();
ViewBag.property1 = new SelectList(listString);
还有一些更正要做。下面是完整的代码:
private void PopulateStringDropdownList(List<ObjectInfo> listObjects, object selectedType = null)
{
List<string> listString = listObjects.OrderBy(x => x.m_Type)
.Select(x => x.m_Type.ToString())
//.Distinct()
.ToList();
ViewBag.cardType = new SelectList(listString );
}
这样,找到的正确值是 Type 的字符串,而不是对象的类型。
感谢大家的帮助!
将int
列表转换为string
列表:
List<string> listString = listObject.OrderBy(x => x.m_Type).
Select(x =>x.ToString()).ToList();
string tags = Convert.ToString(item.tagsNcategory.OrderBy(x => x.meta_value.Select(x => x.ToString())));
var tags_name = tags.Replace(",", " ");