从List <model>填充DataTable的简便方法?

时间:2017-02-06 16:18:53

标签: c# asp.net-mvc datatable

我正在调用一个方法,该方法返回List<MyViewModel>并希望从中填充DataTable。我无法更改返回类型,因为在该列表表单中需要它的其他几个地方调用此方法。我知道我可以迭代列表并一次填充表格,但我希望有更优雅的解决方案,例如它.Load的{​​{1}}函数。

2 个答案:

答案 0 :(得分:3)

从评论看来,真正的问题是您要将强类型列表导出到Excel文件,但您使用的库只接受DataTable。

我建议您使用EPPlus库,它可以从DataTable和集合中加载数据,例如:

sheet.LoadFromDataTable(myTable);

sheet.LoadFromCollection(myList);

EPPlus也可以作为NuGet package使用。

通常,您可以轻松地将集合转换为具有MoreLINQ ToDataTable()扩展名的DataTable,例如:

var myTable=myList.ToDataTable();

您可以找到扩展程序代码here。 MoreLINQ也可以a NuGet package获得。

答案 1 :(得分:0)

NSURL *url = [NSURL URLWithString:@"htttP://www.google.com"];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
[request setHTTPMethod:@"GET"];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sharedSession];
session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:Nil];

[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
  {
      dispatch_async(dispatch_get_main_queue(), ^{
          NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
          if(!error)
          {
              NSError *error;
              NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
              NSLog(@"json - %@", json);
              block(json, error,httpResponse.statusCode);
          }
          else
          {
              block(nil, error,httpResponse.statusCode);
          }
      });
      
  }]resume];
相关问题