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