将IEnumerable <foo>的列表转换为List <string>

时间:2016-11-11 16:39:58

标签: c# list

我正在尝试将令牌列表转换为字符串列表。

这是我的班级代币:

internal class Token
{
    private TokenType Type { get; set; }
    private string Value { get; set; }
    private int Index { get; set; }

    public enum TokenType
    {
        Verb,
        Word,
        Adjective
    }

    public IEnumerable<Token> Tokenizer(string source)
    {
        var token = source.Split().ToList();
        return token;
    }
}

我想做的是将源字符串拆分为字符串列表,然后使用该列表为我的解析器做其他很酷的事情...... 当我添加这行代码时,它会告诉我“无法从List<string>转换为IEnumerable<Token>。我该如何转换它?

var token = source.Split().ToList();

1 个答案:

答案 0 :(得分:2)

错误消息的含义正是它所说的。

public IEnumerable<Token> Tokenizer(string source)

返回类型IEnumerable<Token>,但

var token = source.Split().ToList();

的类型为List<string>List<string>List<Token>之间没有转化(或者就此而言,stringToken之间没有转化。

您需要执行以下操作:

var token = source.Split().Select(item => new Token(item)).ToList();

您还需要编写一个采用string类型的构造函数,并使用它初始化Token

您也可以考虑使用Tokenizer方法static,这样您就不需要使用现有的Token实例来使用它。