Any这个方法是什么意思啊

var ids = ltable.Rows.Cast().Select(row =>
{
var a = row.FindControl("CheckBox1") as CheckBox;
if (a.Checked)
{
return ltable.DataKeys[row.RowIndex].Value.ToString();
}
return null;
}).Where(p => p != null);
if (ids.Any())
{
bool rt;
using (var ss = new GTDataSourse())
{
ss.BeginTransaction();
try
{
rt = bll.DeleteList(string.Join(",", ids));

                }
                catch (Exception ex)
                {
                    ss.RollbackTrans();
                    rt = false;
                    WebUtil.HandleError(ex.Message);
                }
            }
            if (rt)
            {
                search(null, null);
                WebUtil.RegisterScriptAfterHtmlDom(this, "alert('删除成功!');");
            }
        }
        else
        {
            WebUtil.RegisterScriptAfterHtmlDom(this, "alert('请选择删除记录!');");
        }
                    还有.Where(p => p != null是什么东西啊

ids.Any()表示前面这个查询存在至少一个结果
相当于 ids.Count() > 0

而前面的查询是看网格中的CheckBox控件是否有选中的。