我有一个控制器
namespace WebForms
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
public class ProductsController : ApiController
{
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return products;
}
public Product GetProductById(int id)
{
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return product;
}
public IEnumerable<Product> GetProductsByCategory(string category)
{
return products.Where(
(p) => string.Equals(p.Category, category,
StringComparison.OrdinalIgnoreCase));
}
}
}
我想从db。
填充数组产品我有一个产品类。 在我的代码中使用扩展方法来填充列表
List<Product> myProducts = new List<Product>();
myProducts.FillData();
我需要把代码放到用列表填充数组吗?
答案 0 :(得分:2)
您无法调整数组大小,因此无论如何您都需要创建一个新数组。
因此,在myProducts
上使用Enumerable.ToArray()应该没问题:
products = myProducts.ToArray();
答案 1 :(得分:0)
我同意其他评论和答案,只需致电.ToArray()
并结束。但由于OP对自定义扩展方法感兴趣...
在上面创建一个新的命名空间,其中包含扩展方法的逻辑。
namespace CustomExtensions
{
public static class ListExtension
{
public static void Fill(this List<object> thing) //Must be "this" followed by the type of object you want to extend
{
//Whatever
}
}
}
接下来,在您正在进行工作的名称空间中添加using CustomExtensions
。现在当你写...
var myList = new List<object>();
myList.Fill()
编译器不应该抱怨。同样,这不是理想的解决方案,因为您要求的内容已经内置。