是否可以在wp7中使用linq读取文本文件。我的要求是我需要阅读下面给出的文本文件内容并形成一个列表,如何在Windows手机中实现这一点。我的文本文件的格式是。
Game::Cricket::England::Pakistan
Game::Football::England::France
Game::Cricket::Pakistan::Australia
如果在wp7中无法使用Linq to Text文件。然后建议我一个不同的选择。基于我的文本格式的答案是非常值得的
答案 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("::");
}