如何检查我的Linq查询是否产生任何结果?

时间:2011-01-04 06:04:08

标签: c# .net linq-to-entities

大家好我正在使用实体框架,我在检查我的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需要具有可比较类型的参数。”

1 个答案:

答案 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 trueselect cq,即允许优化器使用数据库中的最佳索引。