输入“年龄”值,并计算与输入的“年龄”匹配的“名称”行数

本文关键字:输入 年龄 行数 名称 计算 | 更新日期: 2023-09-27 18:29:26

我想在数据库表中搜索Name的行数。假设我输入12岁,编译器可以搜索与12岁匹配的名称,并计算名称的总行数,我如何键入代码?我正在使用LinqDataRow[],但我的代码不起作用。这是我的代码,有人能帮我修复代码吗?

DataRow[] setSTD = 
    db1.Tables["table1"].
        Select("Age =" + age).
        Select(n => n["Name"]);

输入“年龄”值,并计算与输入的“年龄”匹配的“名称”行数

LINQ

var rows = db1.Tables["table1"]
             .AsEnumerable()
             .Where( o => o.Field<int>( "Age" ) == age );

这将通过添加.Select( o => o.Field<string>( "Name" ) ); 返回一个可枚举的行集合(如果需要,可以从中提取名称列)

如果需要对行进行计数,可以将.Count()添加到任何可枚举集合的末尾。

TSQL

我建议在数据库级别执行此操作,以避免返回不需要的行,而查询只会是:

DECLARE @Age INT = 12;
SELECT * FROM table1 WHERE Age = @Age;

非LINQ.NET

DataTable上有一个比LINQ早的Select()方法。LINQ通常要优越得多,但为了参考Select(),可以传递一个字符串过滤器,例如"Age=12"。Select()返回一个DataRows数组。

参考:http://msdn.microsoft.com/en-us/library/det4aw50.aspx

DataRow[]setSTD = 
db1.Tables["table1"].Where(n => n["Age"] == age).Select(n => n["Name"]);

以下可能有效,但我还没有在实际环境中测试过:

string[] names = (from r in db1.Tables["table1"] where r["Age"] == age select r["Name"]);

问题是:DataTable中有一个SELECT,还有LINQ Select。你需要确保不要把它们弄混。

也许是这样的:

var age=12;
var results = from myRow in db1.Tables["table1"].AsEnumerable()
where myRow.Field<int>("Age") == age
select myRow.Field<string>("Name");