大家好我正在使用实体框架,我在检查我的linq是否返回任何结果时遇到了一些问题,如果它返回任何结果我想用它作为数据源,以下是代码请看看:
var dbContext = new DBEntities();
try
{
var linQuery = from cq in dbContext.tblCharacteristics
where cq.CharacteristicID.Equals(combobox1.SelectedText)
select new
{
CharacteristicIDs = cq.CharID,
CharacteristicNames = cq.CharName
};
if (linQuery.Any()) //Also tried with linQuery.Count() != 0
{
lbChaKeyValues.DataSource = linQuery;
lbChaKeyValues.DisplayMember = "CharacteristicNames";
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dbContext.Dispose();
}
我收到以下错误:“DbComparisonExpression需要具有可比较类型的参数。”
答案 0 :(得分:3)
IF CharacteristicsID是整数类型,比较不起作用。而是尝试
var inputFromUser = Int32.Parse( combobox1.SelectedText );
var linQuery = from cq in dbContext.tblCharacteristics
where cq.CharacteristicID == inputFromUser
select new
{
CharacteristicIDs = cq.CharID,
CharacteristicNames = cq.CharName
};
顺便提一句.Any()
是测试搜索结果的正确方法。如果您不打算使用返回结果,则无需将数据投影为匿名类型。只需使用select true
或select cq
,即允许优化器使用数据库中的最佳索引。