2013-10-29 62 views
0

我在我的Web Api中使用此代碼從csv文件獲取數據,並將該數據插入到項目列表中。從C#中的CSV文件獲得列中的第一個值

private List<Item> ietms = new List<Item>(); 

     public ItemRepository() 
     { 
      string filename = HttpRuntime.AppDomainAppPath + "App_Data\\items.csv"; 

      var lines = File.ReadAllLines(filename).Skip(1).ToList(); 

      for (int i = 0; i < lines.Count; i++) 
      { 
       var line = lines[i]; 

       var columns = line.Split('$'); 

       //get rid of newline characters in the middle of data lines 
       while (columns.Length < 9) 
       { 
        i += 1; 
        line = line.Replace("\n", " ") + lines[i]; 
        columns = line.Split('$'); 
       } 

       //Remove Starting and Trailing open quotes from fields 
       columns = columns.Select(c => { if (string.IsNullOrEmpty(c) == false) { return c.Substring(1, c.Length - 2); } return string.Empty; }).ToArray(); 



       items.Add(new Item() 
       { 
        Id = int.Parse(columns[0]), 
        Name = columns[1], 
        Description = columns[2], 
        Price = string.IsNullOrEmpty(columns[3].Trim()) ? null : (double?)double.Parse(columns[3]), 
        Weight = columns[8], 
        PhotoUrl = columns[7], 
        Category=columns[9] 



       }); 
      } 
     } 

CSV文件中的一列/值的結構是這樣的:

Groups>Subgroup>item 

或在某些情況下

MajorGroup|Groups>Subgroup>item 

我怎麼以前僅抽出的第一個值>或|,以便在第一種情況下得到的值爲Groups,第二種情況下爲MajorGroup,並將其存儲在項目列表中的Category屬性中,現在爲只需設置第9列中的整個值即可返回整個字符串「Groups> Subgroup> item」。

+0

[強制'不推出自己的CSV parser'鏈接](http://secretgeek.net/csv_trouble.asp) – JMK

回答

0

調用 「添加項目」

var temp = columns[9].Split('|', '>'); 

然後分配類別列示如下之前添加以下行。基於

Category = temp[0]; 

MSDN String Method Documentation

+0

能否請您看問題的HTTP ://stackoverflow.com/questions/21538092/get-first-and-last-column-value-in-c-sharp。謝謝 – Tester

0

你的意思是這樣的嗎?

string data = "MajorGroup|Groups>Subgroup>item"; 
string groupOrCategory; 

if (data.Contains('|')) 
{ 
    groupOrCategory = data.Substring(0, data.IndexOf('|')); 
} 
else 
{ 
    groupOrCategory = data.Substring(0, data.IndexOf('>')); 
} 

Console.WriteLine(groupOrCategory); 
相關問題