Windows Phone 7中的LINQ to Text File

时间:2012-01-23 12:46:47

标签: linq windows-phone-7 windows-phone-7.1

是否可以在wp7中使用linq读取文本文件。我的要求是我需要阅读下面给出的文本文件内容并形成一个列表,如何在Windows手机中实现这一点。我的文本文件的格式是。

Game::Cricket::England::Pakistan  
Game::Football::England::France  
Game::Cricket::Pakistan::Australia 

如果在wp7中无法使用Linq to Text文件。然后建议我一个不同的选择。基于我的文本格式的答案是非常值得的

3 个答案:

答案 0 :(得分:2)

我建议采用以下方法......

创建用于保存GameDetail对象的类,并定义一个带有字符串参数的构造函数。这个构造函数可以解析每一行。

public class GameDetail
{
    public string Type { get; set; }
    public string Team1 { get; set; }
    public string Team2 { get; set; }

    public GameDetail(string input)
    {
        var parts = input.Split(new string[] { "::" }, StringSplitOptions.None);
        if(parts.Length != 4) throw new ArgumentException("Invalid input string");
        Type = parts[1];
        Team1 = parts[2];
        Team2 = parts[3];
    }
}

创建一个读取器方法来读取文件的每一行,并将其添加到GameDetails的集合中

List<GameDetail>ReadFile(string filename)
{
    var stream = File.OpenRead(filename);
    var allData = new List<GameDetail>();
    using (StreamReader reader = new StreamReader(stream))
    {
        string line;
        while (( line = reader.ReadLine()) != null)
        {
            allData.Add(new GameDetail(line));
        }
    }
    return allData;
}

注意 - 未经测试......

答案 1 :(得分:1)

不,Linq to .NET in .NET(桌面或手机)没有内置支持。但是,有一个非常棒的Linq-to-CSV库没有代码项目:

http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library

这几乎肯定会在WP7上运行。您可以指定分隔符,因此它应该使用双冒号。

答案 2 :(得分:0)

您可以随时将文件作为文本加载并将其拆分为“::”

using System.IO;

StreamReader streamReader = new StreamReader(filePath);
string text = streamReader.ReadToEnd();
streamReader.Close();
foreach(string s in text.Split("\n"))
{
string[] splitstring = s.Split("::");
}