【问题标题】:Error at c# linq comparisonc# linq 比较时出错
【发布时间】:2014-04-19 11:23:41
【问题描述】:

我有这个 linq,在我的表单上有一些文本框,显示列表框中所选项目的文本框中的数据绑定(来自数据库的数据源)。

var j = (from s in db.Movies where s.Movietitle == listbox1.SelectedValue select s).First();

我必须将电影标题与列表框的选定项进行比较,它们必须相等但我的代码无法继续运行,因为错误:警告 1 可能意外的引用比较;要进行值比较,请在右侧输入“字符串”

我在列表框之前投射了(字符串),但仍然没有变化。可能是什么问题?

【问题讨论】:

  • 或者,使用s.Movietitle == listbox1.Text
  • SelectedValue 是对象类型。使用它的 ToString 方法
  • SelectedValue.ToString() 同样的错误
  • Movietitle是什么类型的?
  • movietitle 是一个外键 ncvarchar50 字符串

标签: c# linq casting compare


【解决方案1】:

listbox1.SelectedValue 转换为sting 并使用FirstOrDefault(),因为查询可能不会返回任何结果。

使用s.Movietitle.ToString(),避免使用"Possible unintended reference comparison"。问题是 s.MovieTitle 是引用类型。例如,如果它是 object 类型,则选择的比较运算符 "==" 正在比较两个对象...您可能猜到了引用。

【讨论】:

  • 字符串转换后出现同样的错误,但 s.Movietitle 并带有绿色下划线
  • 你的s.Movietitle的定义是什么?
  • s.Movietitle.ToString()怎么样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 2020-02-22
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多