Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从文件包含多行的单行读取_C#_Text - Fatal编程技术网

C# 从文件包含多行的单行读取

C# 从文件包含多行的单行读取,c#,text,C#,Text,我想从一行代码中读取: var data = File .ReadLines("itemdata.txt") .SelectMany(x => x.Split('\t')) .Select(x => x.Split('=')) .Where(x => x.Length > 1) .ToDictionary(x => x[0].Trim(), x => x[1

我想从一行代码中读取:

            var data = File
        .ReadLines("itemdata.txt")
        .SelectMany(x => x.Split('\t'))
        .Select(x => x.Split('='))
        .Where(x => x.Length > 1)
        .ToDictionary(x => x[0].Trim(), x => x[1]);
来自包含多行相同文本的文本文件。示例:etcitem=装甲在第一行,etcitem=武器在第二行,希望仅从一行读取。资源应该来自第一行:
textsearch.Text=data[“etcitem”]posbile怎么样?

谢谢大家!

您可以使用.Take()选择第一行,如下所示:

var data = File
    .ReadLines("itemdata.txt")
    .Where(x => x.Contains("5624"))
    .Take(1)
    .SelectMany(x => x.Split('\t'))
    .Select(x => x.Split('='))
    .Where(x => x.Length > 1)
    .ToDictionary(x => x[0].Trim(), x => x[1]);

如果需要跳过任何行,也可以使用.Skip()。

也许ToLookup会更好-我假设您在创建字典时由于非唯一键而出错。虽然我不太清楚你所说的“只从一本书上读”是什么意思。@Baldrick是的,我确实犯了这个错误。你能在我的源代码中显示吗?你想在有2个结果的地方只得到一个结果吗?或者你想把它们全部取回吗?@Baldrick只是一行一行地搜索,因为我从那一行的其他文本中搜索到的结果在另一行中没有显示。我建议将“ToDictionary”替换为“ToLookup”。查找允许每个键有多个值。然后,当你使用查找时,你可以做一个字符串。Join连接该键的结果-这样你就可以在一行上以你选择的方式返回盔甲和武器。这只需要第一行,但如果我使用Skip,它会到达指定行,并注意我用指定文本搜索的那一行。这里有一个例子:第一行是装备5623 etcitem=盔甲,第二行是装备5624 etcitem=武器。我用5624搜索,我不完全明白你的意思,但是如果你需要搜索某一行,你可以在.ReadLines()和.Take()之间使用.Select(x=>x.Contains(“5624”)。你能把它放在你的代码中吗?因为by返回错误。是的,这是搜索特定行的理想方法。如下所示:var data=File.ReadLines(“itemdata.txt”)。Select(x=>x.Contains(“5624”))。Take(1)。SelectMany(x=>x.Split('\t'))。Select(x=>x.Split('='))。其中(x=>x.Length>1)。ToDictionary(x=>x[0]。Trim(),x=>x[1]);此部分在您的代码中不再工作
SelectMany(x=>x.Split('\t'))
。返回错误。