输入“年龄”值,并计算与输入的“年龄”匹配的“名称”行数
本文关键字:输入 年龄 行数 名称 计算 | 更新日期: 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");