我试图找到最好(最快)的方法来总结一个多维数组,然后将其传递给一个对象。
例如,如果我的ad_group_id
包含类似于:
object[,] Data
这将被传递到一个对象,该对象将被定义如下:
John,Utah,Huntsville,0120152,60
John,Utah,Huntsville,06122013,40
Dallin,Maryland,CityTown,10202012,30
Aaron,Connecticut, Harbourville,12122017,100
Dallin,Maryland,CityTown,04232011,8
Aaron,Virginia,GeorgeTown,02212013,200
因此,数据的表示可能类似于:
string name, string state, string city, List<int> date, List<double> total
我知道我可以从每个列中获取不同的项目,然后使用For和if语句,但对于编程和具有非常大的数据集的新手,我有点担心需要多长时间。并且作为多维数组也使得难以排序。因此,任何关于如何处理这个问题的人都将不胜感激。
答案 0 :(得分:0)
您是否必须将数据存储在多维数组中?例如,如果您按如下方式构建数据,该怎么办:
public class Activity
{
public int ActivityDate { get; get; }
public double ActivityTotal { get; set; }
}
public class Person
{
public string Name { get; set; }
public string State { get; set; }
public string City { get; set; }
public List<Activity> { get; set; }
}
进入这种类型结构的数据应该相对容易,然后通过LINQ可以获得简单排序,汇总等的额外好处。
当你说“大”数据集时......有多大?
编辑:
足够公平......我没有意识到你没有控制数据如何加载到你的对象中。
也就是说,Domain对象可能看起来像这样:
public class Person
{
public string Name { get; set; }
public string State { get; set; }
public string City { get; set; }
public List<int> Date { get; set; }
public List<double> Total { get; set; }
}
这是一个非常粗略的例子,说明如何将Data
对象转换为此类。请注意,这绝对没有错误捕获或类型验证的方式:
List<Person> p = new List<Person>();
for (int i = 0; i < Data.Length; i++)
{
p.Add(new Person()
{
Name = (string)Data[i, 0],
State = (string)Data[i, 1],
City = (string)Data[i, 2],
Date = (List<int>)Data[i, 3],
Total = (List<double>)Data[i, 4]
});
}
答案 1 :(得分:0)
这是使用LINQ的解决方案(这实际上是一行代码:-))
-(void)populateData{
CSVParser *parser = [CSVParser sharedInstance];
NSArray *ports = [parser parseCSVFile: @"ports"];
for(NSDictionary *value in ports){
[self addPort:value];
}
}
-(void)addPort:(NSDictionary*)value{
//say you created a table ports
NSDictionary *sql=[self createInsertSQLWithValue:value forTable:@"ports"];
BOOL inserted=[self.db executeUpdate:[sql objectForKey:@"sql"] withArgumentsInArray:[sql objectForKey:@"args"]];
if(inserted){
NSLog(@"Port Inserted");
}
}
将根据此要求对值进行分组。
达林,马里兰州,CityTown
var results = File.ReadAllLines(@"Your file path.txt") .Select(record => record.Split(',')) .Select(tokens => new { Name1 = tokens[0], Name2 = tokens[1], Name3 = tokens[2], Group1 = tokens[3], Group2 = tokens[4] }) .GroupBy(x => new { x.Name1, x.Name2, x.Name3 }).ToList(); foreach(var result in results) { Console.WriteLine(result.Key.Name1); Console.WriteLine(result.Key.Name2); Console.WriteLine(result.Key.Name3); foreach(var groupItem in result.ToList()) { Console.WriteLine(groupItem.Group1); Console.WriteLine(groupItem.Group2); } }
约翰,犹他州,Huntsville的
04232011, 8 10202012, 30