C#尝试获取具有相同ID但有多个订单的数据

C#尝试获取具有相同ID但有多个订单的数据,c#,datareader,C#,Datareader,晚上好, 我对以下代码有问题,它可以工作,但它只显示来自一个ID的一个订单: namespace ProjectDatabase.Models { 公共类搜索查询 { 公共AppDb数据库{get;} 公共搜索查询(AppDb) { Db=Db; } 公共异步任务FindAllAsync(int-id) { 使用var cmd=Db.Connection.CreateCommand(); cmd.CommandText=@“…我的查询”; cmd.Parameters.Add(新的MySqlPa

晚上好,

我对以下代码有问题,它可以工作,但它只显示来自一个ID的一个订单:

namespace ProjectDatabase.Models
{
公共类搜索查询
{
公共AppDb数据库{get;}
公共搜索查询(AppDb)
{
Db=Db;
}
公共异步任务FindAllAsync(int-id)
{
使用var cmd=Db.Connection.CreateCommand();
cmd.CommandText=@“…我的查询”;
cmd.Parameters.Add(新的MySqlParameter
{
ParameterName=“@id\u客户”,
DbType=DbType.Int32,
Value=id,
});
var result=await ReadAllAsync(await cmd.ExecuteReaderAsync());
返回结果.计数>0?结果[0]:空;
}
公共异步任务FindOneIdAsync(int-id)
{
使用var cmd=Db.Connection.CreateCommand();
cmd.CommandText=@“…我的查询”;
cmd.Parameters.Add(新的MySqlParameter
{
ParameterName=“@id\u客户”,
DbType=DbType.Int32,
Value=id,
});
var result=await ReadAllAsync(await cmd.ExecuteReaderAsync());
返回结果.计数>0?结果[0]:空;
}
公共异步任务LatestSearchAsync()
{
使用var cmd=Db.Connection.CreateCommand();
cmd.CommandText=@“…我的查询”;
返回await ReadAllAsync(await cmd.ExecuteReaderAsync());
}
专用异步任务ReadAllAsync(DbDataReader)
{
var adb_search=新列表();
使用(读卡器)
{
while(等待reader.ReadAsync())
{
var搜索=新搜索(Db)
{
id_customer=reader.GetInt32(0),
delivery\u person\u name=reader.GetString(1),
firstname=reader.GetString(2),
lastname=reader.GetString(3),
email=reader.GetString(4),
订单号=reader.GetString(5),
};
adb_search.Add(搜索);
}
}
返回adb_搜索;
}
}
}
以下是《邮差》中的内容:

{
“id_客户”:88,
“送货人姓名”:“姓名”,
“名字”:“名字”,
“lastname”:“lastname”,
“电子邮件”:“电子邮件”,
“订单号”:“订单”
}
问题是,例如,这个ID为88的客户将有更多的订单完成,比如50个,但它明确地只显示了第一个订单,仅此而已。结束后,其他49个订单将不会显示

这很奇怪,因为我在这3个查询中有另一个查询,它向我显示数据库中的所有用户,它工作正常,并向我显示所有100个用户,但在orders查询中,它只向我显示1个结果,就这样

可能问题是我使用相同的结果来显示两个不同的查询?在您提问之前,是的,我已经在SQLyog中测试了查询,它显示了50个订单,但在代码中它只显示了第一个订单

在你做出判断之前,是的,我是C#的一个笨蛋


谢谢,NewSounD。

问题是
findalsync
返回
任务
。您需要一个列表,因此需要返回
Task

这迫使您只返回一个搜索并编写以下代码:
返回结果。计数>0?结果[0]:空

固定代码:
公共异步任务findalsync(int-id)
{
使用var cmd=Db.Connection.CreateCommand();
cmd.CommandText=@“…我的查询”;
cmd.Parameters.Add(新的MySqlParameter
{
ParameterName=“@id\u客户”,
DbType=DbType.Int32,
Value=id,
});
var result=await ReadAllAsync(await cmd.ExecuteReaderAsync());
返回结果;
}

这不是解释了吗:
返回结果。计数>0?结果[0]:空?您只返回可枚举项的第一项。它不应该是
返回结果。计数>0吗?结果:无效?您好,我已经尝试过这样做,但它给了我以下错误:CS0029:无法将类型“System.Collections.Generic.List”隐式转换为“ProjectDatabase.Models.search”您好<代码>wait ReadAllAsync(wait cmd.ExecuteReaderAsync())返回
列表
。您的方法返回
search
。修复它并替换
返回结果。计数>0?结果[0]:空
返回结果
@news如果您的方法签名错误,请将
public async Task findalsync(int-id)
更改为
public async Task findalsync(int-id)
@RyanWilson OMG,成功了!!非常感谢你!所以对于List,它在执行之前基本上构建了一个列表?是的,谢谢你们和Ryan Wilson,我还使用了返回结果。计数>0?结果:无效;而不仅仅是返回结果。