свойство удалить из списка

#c# #linq #linq-to-objects

#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 строк, теперь я хочу удалить свойство CategoryID из моего списка oList.Я знаю, как удалить элемент из списка, приведенный ниже синтаксис может это сделать, но я не знаю, как удалить свойства элемента

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

Помогите мне удалить свойство из списка.Заранее спасибо.

Комментарии:

1. Вы действительно должны принять правильные ответы

Ответ №1:

Если вы хотите «удалить» свойство, вам придется создать новый тип без этого свойства:

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

или использовать анонимный тип:

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

Комментарии:

1. спасибо, это хороший способ избежать нежелательных свойств. Спасибо

Ответ №2:

Как насчет наследования?

 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();
  

Ответ №3:

Вы можете сделать это с помощью переменной анонимного типа

 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);   
            }