不能将类型“int”隐式转换为“System.Collections.Generic.List
本文关键字:Generic Collections System List St QuickTest 转换 类型 int 不能 | 更新日期: 2023-09-27 18:30:45
我有以下代码:
static void Main(string[] args)
{
List<Stock> ticker = new List<Stock>();
ticker.Add(new Stock("msft"));
ticker.Add(new Stock("acw"));
ticker.Add(new Stock("gm"));
ticker = ticker.OrderBy(s => s.Name).ToList();
foreach (Stock s in ticker)
{
Console.WriteLine(s.Name);
}
Console.WriteLine("'n");
ticker = ticker.RemoveAll(s => s.TickerSymbol == "gm");
foreach (Stock s in ticker)
{
Console.WriteLine(s.Name);
}
}
Stock 是具有字符串属性 TickerSymbol 和 Name 的对象。它还具有双重属性Price,ChangeDollar和ChangePercent。
我编写的第二个 LINQ 语句抛出一个错误,并显示消息"无法将类型'int'隐式转换为'System.Collections.Generic.List'"。我对类型"int"的来源以及如何修复此错误感到困惑,因为我在程序的任何地方都没有使用任何 int 值。
我对 LINQ 也很陌生,这是我第一次使用它。此错误很可能是我不知道的 LINQ 的某些复杂性的结果。
有人知道为什么会发生此错误以及如何解决它吗?
您得到的错误是合理的,因为RemoveAll
返回已删除股票的数量。这是一个整数。然后你尝试将其分配给名为 ticker
的变量,该变量包含 Stock
类型的对象列表。
您可能想要的是删除其TickerSymbol
gm
的所有股票,然后将他们留在股票代码中的股票写入控制台。为此,您可以尝试以下操作:
// This will remove all the stocks you want.
ticker.RemoveAll(s => s.TickerSymbol == "gm");
foreach (Stock s in ticker)
{
Console.WriteLine(s.Name);
}
此外,为了记录在案,如 MSDN 中所述:
该方法List<T>.RemoveAll()
删除与 定义的条件匹配的所有元素 指定的谓词。
它的签名如下:
public int RemoveAll(Predicate<T> match)
Predicate<T>
是方法的委托,如果传递给它的对象与委托中定义的条件匹配,则返回 true。当前 List 的元素将单独传递给谓词委托,与条件匹配的元素将从列表中删除。
此方法执行线性搜索;因此,此方法是 O(n) 操作,其中 n 是列表的 Count 属性。
本文关键字:Generic Collections System List St QuickTest 转换 类型 int 不能 | 更新日期: 2023-09-27 18:30:45
我有以下代码:
static void Main(string[] args)
{
List<Stock> ticker = new List<Stock>();
ticker.Add(new Stock("msft"));
ticker.Add(new Stock("acw"));
ticker.Add(new Stock("gm"));
ticker = ticker.OrderBy(s => s.Name).ToList();
foreach (Stock s in ticker)
{
Console.WriteLine(s.Name);
}
Console.WriteLine("'n");
ticker = ticker.RemoveAll(s => s.TickerSymbol == "gm");
foreach (Stock s in ticker)
{
Console.WriteLine(s.Name);
}
}
Stock 是具有字符串属性 TickerSymbol 和 Name 的对象。它还具有双重属性Price,ChangeDollar和ChangePercent。
我编写的第二个 LINQ 语句抛出一个错误,并显示消息"无法将类型'int'隐式转换为'System.Collections.Generic.List'"。我对类型"int"的来源以及如何修复此错误感到困惑,因为我在程序的任何地方都没有使用任何 int 值。
我对 LINQ 也很陌生,这是我第一次使用它。此错误很可能是我不知道的 LINQ 的某些复杂性的结果。
有人知道为什么会发生此错误以及如何解决它吗?
您得到的错误是合理的,因为RemoveAll
返回已删除股票的数量。这是一个整数。然后你尝试将其分配给名为 ticker
的变量,该变量包含 Stock
类型的对象列表。
您可能想要的是删除其TickerSymbol
gm
的所有股票,然后将他们留在股票代码中的股票写入控制台。为此,您可以尝试以下操作:
// This will remove all the stocks you want.
ticker.RemoveAll(s => s.TickerSymbol == "gm");
foreach (Stock s in ticker)
{
Console.WriteLine(s.Name);
}
此外,为了记录在案,如 MSDN 中所述:
该方法List<T>.RemoveAll()
删除与 定义的条件匹配的所有元素 指定的谓词。
它的签名如下:
public int RemoveAll(Predicate<T> match)
Predicate<T>
是方法的委托,如果传递给它的对象与委托中定义的条件匹配,则返回 true。当前 List 的元素将单独传递给谓词委托,与条件匹配的元素将从列表中删除。
此方法执行线性搜索;因此,此方法是 O(n) 操作,其中 n 是列表的 Count 属性。