属性从列表中删除

时间:2011-10-10 07:05:42

标签: c# linq linq-to-objects

从列表中删除属性

        NorthwindDataContext db = new NorthwindDataContext();
        List<CategorySml> oList = new List<CategorySml>();
        oList = db.Categories.Select(p => new CategorySml { CategoryID = p.CategoryID, CategoryName = p.CategoryName }).ToList();

class CategorySml

{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
}

我的列表包含超过100行,现在我要从列表 oList 中删除 CategoryID 属性。我知道如何从列表中删除项目语法可以执行那,但我不知道如何删除项目的属性

oList.RemoveAll(x => x.CategoryID== 1);

帮我从列表中删除属性。提前谢谢。

3 个答案:

答案 0 :(得分:3)

如果您要“删除”该属性,您将创建没有此属性的新类型:

oList = db.Categories.Select(p => new YourNewCategorySml { 
  CategoryName = p.CategoryName })
  .ToList();  

或使用匿名类型:

oList = db.Categories.Select(p => new { CategoryName = p.CategoryName })
  .ToList();  

答案 1 :(得分:0)

继承怎么样?

class BaseCategory
{
  public string CategoryName { get; set; }
}
class CategorySml : BaseCategory

{
    public int CategoryID { get; set; }
}

NorthwindDataContext db = new NorthwindDataContext();
        List<BaseCategory> oList = new List<BaseCategory>();
        oList = db.Categories.Select(p => new BaseCategory{ CategoryName = p.CategoryName }).ToList();

答案 2 :(得分:0)

您可以通过匿名类型变量

执行此操作
try
            {
               NorthwindDataContext db= new NorthwindDataContext();
               var oList = db.Categories.Select(p => new { Categoryname = p.CategoryName }).ToList();                
               dg.DataSource = oList;



                MessageBox.Show("OK"); 
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);   
            }