为什么这个动态列表比较失败了?

时间:2012-12-08 20:22:37

标签: c# asp.net linq

我有一个返回动态结果的搜索。因此,如果找不到结果,我会尝试显示标签。我遇到的问题是我不知道如何计算结果,因为它是动态的,不等于类型。

错误消息是:

  

运算符'!''无法应用类型的操作数   System.Collections.Generic.List和int

 if (Page.IsValid)
            {


                string keyword = txtSearch.Text.Trim();
                List<dynamic> results = SearchItems(keyword);
                List<dynamic> Cresults = SearchContacts(keyword);



               if(results != 0 || Cresults !=0)
               {


                    //bind and return
                    LVI.DataSource = results;
                    LVI.DataBind();
                    // System.Threading.Thread.Sleep(500);

                    //Contact Bind return
                    LVC.DataSource = Cresults;
                    LVC.DataBind();
                    //  System.Threading.Thread.Sleep(250);


                    lvAdmin.DataSource = results;
                    lvAdmin.DataBind();


                    LVCAdmin.DataSource = Cresults;
                    LVCAdmin.DataBind();
               }
               else{

                    NoResults.Visible = true;

               }

3 个答案:

答案 0 :(得分:7)

不能只做:

if(results != 0 || Cresults !=0)
{

}

通过这种方式,您可以将实际的List0进行比较,这显然会失败。

只是做:

if(results.Count != 0 || Cresults.Count !=0)
{

}

或者:

if(results.Any() || Cresults.Any())
{

}

答案 1 :(得分:4)

使用Count类的List属性:

if (results.Count != 0 || Cresults.Count != 0)
{
    //rest of code
}

文档:http://msdn.microsoft.com/en-us/library/a7f69ad7.aspx

答案 2 :(得分:4)

您可以尝试使用计数

if(results.Count > 0 || Cresults.Count > 0)