ASP.NET Web API コントロール
.NETコレクションの設定
ComponentOne for Web API > Web APIの使用 > Web API の設定 > .NETコレクションの設定

.NETコレクション内のデータは、目的の形式でExcelファイルを生成、結合、および変換する際にも使用できます。このセクションでは、Web API サービスアプリケーションで.NETコレクションを構成する方法を具体的に示します。この例では、IEnumerable インタフェースを実装して、モデルで生成されたデータを使用します。

ノート: Web APIサービスアプリケーションで.NET Collectionsを設定して、.NET Collectionsを使用するためにサービスを呼び出すクライアント側アプリケーションを作成できます。 詳細については、サービスのトピックを参照してください。
  1. サービスアプリケーションで、Models フォルダ内に目的のモデルクラスを作成します。たとえば、ここではSales.cs モデルとCustomerOrder.cs モデルを作成します。
    Example Title
    コードのコピー
    public class Sale
        {        
            public int ID { get; set; }
            public DateTime Start { get; set; }
            public DateTime End { get; set; }
            public string Country { get; set; }
            public string Product { get; set; }
            public string Color { get; set; }
            public double Amount { get; set; }
            public double Amount2 { get; set; }
            public double Discount { get; set; }
            public bool Active { get; set; }
    
            public MonthData[] Trends { get; set; }
            public int Rank { get; set; }
            public static IEnumerable <Sale> GetData(int total)
            {
                var countries = new[] { "日本","中国","フランス","ドイツ","イタリア",
    "韓国","オーストラリア", };
                var products = new[] { "Widget", "Gadget", "Doohickey" };
                var colors = new[] { "Black", "White", "Red", "Green", "Blue" };
                var rand = new Random(0);
                var dt = DateTime.Now;
                var list = Enumerable.Range(0, total).Select(i =>
                {
                    var country = countries[rand.Next(0, countries.Length - 1)];
                    var product = products[rand.Next(0, products.Length - 1)];
                    var color = colors[rand.Next(0, colors.Length - 1)];
                    var date = new DateTime(dt.Year, i % 12 + 1, 25, i % 24, i % 60,
     i % 60);
    
                    return new Sale
                    {
                        ID = i + 1,
                        Start = date,
                        End = date,
                        Country = country,
                        Product = product,
                        Color = color,
                        Amount = rand.NextDouble() * 10000 - 5000,
                        Amount2 = rand.NextDouble() * 10000 - 5000,
                        Discount = rand.NextDouble() / 4,
                        Active = (i % 4 == 0),
                        Trends = Enumerable.Range(0, 12).Select(x => new MonthData 
    { Month = x + 1, Data = rand.Next(0, 100) }).ToArray(),
                        Rank = rand.Next(1, 6)
                    };
                });
                return list;
            }
    
            internal static dynamic GetCountries()
            {
                throw new NotImplementedException();
            }
    
            internal static dynamic GetProducts()
            {
                throw new NotImplementedException();
            }
        }
    
        public class MonthData
        {
            public int Month { get; set; }
            public double Data { get; set; }
        }
    }
    
    Example Title
    コードのコピー
    public partial class FlexGridController: Controller {
      public ActionResult Index() {
        var customers = db.Customers.Take(10).ToList();
        var model = customers.Select(c => new CustomerWithOrders {
          CustomerID = c.CustomerID,
            CompanyName = c.CompanyName,
            Country = c.Country,
            City = c.City,
            Orders = (db.Orders.Where(o => o.CustomerID == c.CustomerID).ToList())
        });
        return View(model);
      }
    }                                                       
    
  2. 以下に示すように、AddDataSet()メソッドを通してサービスアプリケーションのデータプロバイダマネージャーにデータセットを追加することにより、Startup クラスのConfiguration (IAppBuilder app) メソッド内でモデルを設定します。
    C#
    コードのコピー
    app.UseDataProviders()
            .AddItemsSource("Sales", () =>
     Sale.GetData(10).ToList())
            .AddItemsSource("Orders", () => CustomerOrder.GetOrderData(20).ToList())