【问题标题】:Find index of returned list result C#查找返回列表结果的索引 C#
【发布时间】:2018-08-25 19:11:55
【问题描述】:

如何在列表中找到条目的索引。我的代码如下。

listFromlistTo 包含字符串条目。

我收到错误:

严重性代码描述项目文件行抑制状态 错误 CS1503 参数 1:无法从 'System.Collections.Generic.List' 转换为 'string'

List<string> listFrom = new List<string>(); //Contains a list of strings
List<string> listTo = new List<string>(); //Contains a list of strings

List<string> lineStart = listFrom.Except(listTo).ToList(); //Will always return a single value
List<string> lineEnd = listTo.Except(listFrom).ToList(); //Will always return a single value

int startLineIndex = listFrom.IndexOf(lineStart);            //Error on this line
Console.WriteLine("Index of Start: " + startLineIndex);

【问题讨论】:

  • 您的列表都是空的。你想做什么?
  • 您对那个编译时错误有什么不明白的地方?该方法采用string 作为参数,您传入的是List&lt;string&gt;
  • listFrom.IndexOf 需要 string 你正在传递一个 List&lt;string&gt; - 错误信息非常清楚
  • @Stefan 我不知道你想做什么。 Except() 为您提供两个列表之间差异的集合。如果您确定结果集合中只会有 一个 项,请不要调用ToList(),根据您的需要调用SingleOrDefault()FirstOrDefault()。确保查找它们之间的区别。
  • @maccettura 谢谢。 SingleOrDefault() 做我想做的事。正确,总会退回一件商品。我应该在我的问题中提到这一点。

标签: c# string list indexing indexof


【解决方案1】:

如错误所示,它无法从'System.Collections.Generic.List' 转换为'string'。但是我从来不知道函数SingleOrDefult()存在。

All credit to @maccettura even though he didn't know what I was trying to do! xD

下面的代码更改为答案:

List<string> listFrom = new List<string>(); //Contains a list of strings
List<string> listTo = new List<string>(); //Contains a list of strings

string lineStart = listFrom.Except(listTo).SingleOrDefault();
string lineEnd = listFrom.Except(listTo).SingleOrDefault();

int startLineIndex = listFrom.IndexOf(lineStart);            //Error on this line
Console.WriteLine("Index of Start: " + startLineIndex);

【讨论】:

  • 确保您了解SingleOrDefault() 的作用,如果由于某种原因您有多个项目,它抛出异常。 Docs供参考
【解决方案2】:

这是因为当您调用 listFrom.IndexOf(lineStart); 时,它需要一个字符串。您的代码中的 lineStart 被定义为字符串列表,因此您需要调用列表中的特定值,或者将 lineStart 更改为字符串。

【讨论】:

  • 如果 OP 将 lineStart 更改为字符串,则代码将无法编译。还有更多工作要做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多