我的数据库中保存的数据包含pointNumber
字段int
。
我有一个剑道网格,当我点击"删除"按钮,我希望能够删除数据库中pointNumber
与该行的pointNumber
匹配的行。
到目前为止,我尝试这样的事情:
public ActionResult Delete(PlanningViewParam data)
{
List<PointData> Points = UserSession.GetValue(
StateNameEnum.Planning,
ScreenName.Planning.ToString() + "Points" + data.ViewType,
UserSessionMode.Database) as List<PointData>;
int Number = 1;
Number = data.Number;
PointData point = Points.Where( a=> a.pointNumber == Number);
if (point != null)
{
Points.Remove(point);
}
}
我坚持的部分是这个LINQ查询:
PointData point = Points.Where(a => a.pointNumber == Number);
我收到此错误:
无法隐式转换类型 &#39; System.Collections.Generic.IEnumerable&#39;到了PointData&#39;。一个 存在显式转换(您是否错过了演员表)?
这是什么意思,我该如何调整查询?
答案 0 :(得分:5)
您可以进行一项调整:
Points.RemoveAll( a=> a.pointNumber == Number);
然后你不必获得Where
的结果并用它做点什么。
答案 1 :(得分:2)
where方法将返回Enumerable。您需要选择要删除的第一个值
PointData point = Points.Where( a=> a.pointNumber == Number).FirstOrDefault();
或枚举列表并删除for循环
List<PointData> points = Points.Where( a=> a.pointNumber == Number).ToList();
答案 2 :(得分:2)
public ActionResult Delete(PlanningViewParam data)
{
List<PointData> Points = UserSession.GetValue(
StateNameEnum.Planning,
ScreenName.Planning.ToString() + "Points" + data.ViewType,
UserSessionMode.Database) as List<PointData>;
Points=Points.Where(p=>p.pointNumber!=data.Number).ToList();
}
答案 3 :(得分:-1)
听起来像Points.Where( a=> a.pointNumber == Number);
正在返回一个集合。试试Points.Where( a=> a.pointNumber == Number).FirstOrDefault();