c#List<>选择特定变量

时间:2013-09-15 14:29:18

标签: c# asp.net

我有gridview(ASPxGridView),我想填充行。 我的c#代码是这样的:

List<ProductEntity> productList;
productList = product.getProducts();
gvProducts.DataSource =...
gvProducts.DataBind();

我不想显示ProductEntity的所有变量,只显示名称和价格。

我知道有很多方法,但最简单,最简单的方法是什么?

我试过这样的事情:

productList = product.getProducts().foreach()

但它没有用。感谢。

3 个答案:

答案 0 :(得分:1)

如果没有看到更多代码我无法确定,但如果您只想从产品中选择名称和价格......

List<ProductEntity> productList;
productList = product.getProducts()
                       .Select(p => new {  p.Name, p.Price });

编辑:扩展我的代码示例以显示工作测试:

 using System.Collections.Generic;
    using System.Linq;
    using NUnit.Framework;

    namespace StackOverflow
    {
        [TestFixture]
        public class ProductListQuestion
        {
            class ProductEntity
            {
                public string Name { get; set; }
                public decimal Price { get; set; }
                public string OtherProperty { get; set; }
            }

            [Test]
            public void CanSelectProperties()
            {
                var products = new List<ProductEntity>
                {
                    new ProductEntity {Name = "First", Price = 1M},
                    new ProductEntity {Name = "Second", Price = 2M},
                    new ProductEntity {Name = "Third", Price = 3M}
                };

                var productList = products
                   .Select(p => new {  p.Name, p.Price });

                Assert.That(productList, Is.Not.Null);
                Assert.That(productList.Count(), Is.EqualTo(3));
                Assert.That(productList.ElementAt(0), Has.No.Property("OtherProperty"));
                Assert.That(productList.ElementAt(0), Has.Property("Name"));

            }
        }
    }

答案 1 :(得分:0)

var result =product.getProducts().Select(x=> 
          new {Name = x.name ,
                  Price= x.price})
         .ToList();

答案 2 :(得分:0)

在GridView上执行以下步骤:

  1. 禁用AutoGenerateColumns
  2. 点击GridView而不是“Edit Columns
  3. 添加要从实体中显示的列。例如添加BoundField,它必须包含您要显示的列的HeaderText名称,以及实体中DataField变量的名称