如何在将DataSource应用于ListView之前对其进行过滤

时间:2011-07-26 23:35:01

标签: c# linq listview

我有一个Entity数据源,我需要在将它传递给ListView之前进行过滤。这是未经过滤的版本(效果很好):

DataContext db = new DataContext();
ListView1.DataSource = db.Cars;
ListView1.DataBind();

我正在尝试了解如何仅选择蓝色的汽车(数据库中的字段/属性/行),并将这些汽车仅传递给ListView。我一直在尝试各种变化:

String selectedColor = "blue";
DataContext db = new DataContext();
ListView1.DataSource = db.Cars.Any(m => m.Cars.color == selectedColor);
ListView1.DataBind();

3 个答案:

答案 0 :(得分:2)

这不应该更像是,

ListView1.DataSource = db.Cars.Where(car => car.Color == selectedColor);

你的db.Cars.Any(m => m.Cars.color == selectedColor) [更正:应该是m.Color而不是m.Cars.Color如果你想顺便使用它]声明将返回true如果在你的汽车收藏中至少有一辆车有颜色值与selectedColor的值相同。

答案 1 :(得分:1)

Any()返回一个bool。您需要Where()

答案 2 :(得分:1)

我还会使用using语句来包装您的上下文。这应该自动处理您的上下文处理。

String selectedColor = "blue";
using(DataContext db = new DataContext())
{
   ListView1.DataSource = db.Cars.Where(m => m.Cars.color == selectedColor);
   ListView1.DataBind();
}