Linq 统计数据源中的记录-c#

Linq 统计数据源中的记录-c#,linq,visual-studio-2010,datasource,Linq,Visual Studio 2010,Datasource,如果搜索没有返回数据源中的任何记录,我想在屏幕上显示一条消息,只是不确定语法 乙二醇 或者评估数据源后面的linq查询 有什么想法吗 谢谢您可以使用gridview的Rows集合 if(gridview.Rows.Count == 0) { do a thing } 您需要将数据源强制转换为它绑定到的正确类型。仅使用行并不总是提供数据源中的总计数。看看这个例子: <asp:GridView ID="GridView1" runat="server" AllowPaging="

如果搜索没有返回数据源中的任何记录,我想在屏幕上显示一条消息,只是不确定语法

乙二醇

或者评估数据源后面的linq查询

有什么想法吗


谢谢

您可以使用gridview的Rows集合

if(gridview.Rows.Count == 0)
{
 do a thing
}

您需要将数据源强制转换为它绑定到的正确类型。仅使用行并不总是提供数据源中的总计数。看看这个例子:

<asp:GridView ID="GridView1" runat="server" 
    AllowPaging="true" PageSize="3">
</asp:GridView>

在代码隐藏中:

var fruit = new List<string>() 
    { "banana", "orange", "apple", "strawberry", "melon", "grape" }

GridView1.DataSource = fruit;
GridView1.DataBind();

int rowsCount = GridView1.Rows.Count; // rowsCount = 3

int dataCount = ((List<string>)GridView1.DataSource).Count; // dataCount = 6
var fruit=新列表()
{“香蕉”、“橘子”、“苹果”、“草莓”、“甜瓜”、“葡萄”}
GridView1.DataSource=水果;
GridView1.DataBind();
int rowsCount=GridView1.Rows.Count;//rowsCount=3
int dataCount=((列表)GridView1.DataSource).Count;//数据计数=6

因此,您可以看到,由于启用了分页,因此仅计算行数只返回“3”。这是当前页面的行数。但是,强制转换数据源会得到原始数据源返回的计数。因此,只要您理解其中的区别,就可以使用任何一种方法。

No,rows集合中只包含DataControlRowType.DataRow的行:如果启用了分页,则rows将只提供当前页面的行。这很好,谢谢,您可以对数据列表执行类似的操作吗?是的,但它有点不同:DataList包含一个Items集合,其中包含所有类型的行。您可能希望只计算绑定到数据的行,而不计算页眉、页脚。。。尝试var MyRowCount=MyDataList.Items.Cast().Count(d=>d.ItemType==ListItemType.Item);谢谢你,这对将来很有用,虽然在这个项目中不需要分页,但这会很方便的
var fruit = new List<string>() 
    { "banana", "orange", "apple", "strawberry", "melon", "grape" }

GridView1.DataSource = fruit;
GridView1.DataBind();

int rowsCount = GridView1.Rows.Count; // rowsCount = 3

int dataCount = ((List<string>)GridView1.DataSource).Count; // dataCount = 6