我在Web Api中使用此代码从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
如何仅提取&gt;之前的第一个值?或者|,以便我在第一种情况下获得Groups
的值,在第二种情况下获得MajorGroup
,并将其存储在项目列表中的Category
属性中,现在只是设置为第9列中的整个值,该值将返回整个字符串“Groups&gt; Subgroup&gt; item”。
答案 0 :(得分: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);
答案 1 :(得分:0)
在调用“添加项目”
之前添加以下行var temp = columns[9].Split('|', '>');
然后按如下方式分配类别。
Category = temp[0];