使用c#在csv文件中搜索值

时间:2014-02-04 16:08:30

标签: c# csv

我有一个名为 file.csv 的csv文件,其中包含以下数据

Id   Name     Address   Contact
 1   Peter    USA       12345
 2   Anna     UK        45678
 3   John     USA       9876

我想使用c#搜索名称,并返回地址中的值。 例如。如果用户为Peter打电话,那么应该返回美国。

谁能给我一些想法?

4 个答案:

答案 0 :(得分:3)

我建议你创建一些类来保存这些数据:

public class Person
{
   public int Id { get; set; }
   public string Name { get; set; }
   public string Address { get; set; }
   public string Contact { get; set; }
}

然后从您的文件中读取人物:

var person = File.ReadLines("file.csv").Skip(1)
                 .Select(ParsePersonFromLine)
                 .Where(p => p.Name == "Peter")
                 .FirstOrDefault();

if (person != null)
   // use person.Address

解析人可以看起来像:

private static Person ParsePersonFromLine(string line)
{
    string[] parts = line.Split(',');
    return new Person {
        Id = Int32.Parse(parts[0]),
        Name = parts[1],
        Address = parts[2],
        Contact = parts[3]
    };
}

答案 1 :(得分:1)

您可以创建一个功能来执行此任务,如下所示:

String GetAddress(String searchName)
{       
   var strLines=File.ReadLines("filepath.csv");
   foreach(var line in strLines)
   {
      if(line.Split(',')[1].Equals(searchName))
         return line.Split(',')[2];
   }

   return "";
}

您可以按以下方式调用上述功能:

String peterAddress=GetAddress("Peter");

编辑:

        String address="";
        Dictionary<String, String> dict_Name_Address = new Dictionary<string, string>();
        var lines=File.ReadLines("FileName.csv");
        foreach (var line in lines)
        {
            dict_Name_Address.Add(line.Split(',')[1],line.Split(',')[2]);
        }
        if(dict_Name_Address.ContainsKey(searchKey))
         address = dict_Name_Address[searchKey];

答案 2 :(得分:0)

如果您的文件格式正确,这应该可以。

var values = File.ReadLines("file.csv")
                 .Skip(1)
                 .Select(line => line.Split(','))
                 .ToList();

var address = values.Where(x => x[1] == "Peter")
                    .Select(x => x[2])
                    .First();

答案 3 :(得分:0)

试试这个

class Program
    {
        static void Main(string[] args)
        {
            List<string> resLines = new List<string>();
            var lines  = File.ReadLines("file.csv");
            foreach (var line in lines)
            {

                //here I suppose that your csv file it like this 
                    // 1,Peter,USA,12345
                    // 2,Anna,UK,45678
                var res = line.Split(new char[] {','});
              //or name to search 
                if (res[1] == "Peter")
                {                        
                    resLines.Add(res[2]);

                }
            }
            //to get the output  
            foreach (var line in resLines)
            {
                Console.WriteLine(line);
            }

        }
    }