我正在尝试根据传入的ID参数从数据库中检索一些记录。但是它给我一个错误提示
无法隐式转换类型System.Collection.Generic.IEnumerable 从SourceModel到SourceModel。存在显式转换 缺少演员)
这是查询连接到数据库的一部分
public static class Source
{
public static IEnumerable<SourceModel> GetRecords(string ID, Func<SourceModel,bool> criteria = null)
{
var command = new StringBuilder();
command.AppendFormat("Select * from [RecordsTable] where ID={0}", ID);
return ExecuteQuery(command.ToString());
}
}
这是我尝试通过的代码,
public static SourceModel GetRecord(string ID)
{
var recs = Source.GetRecords(ID);
return recs; // on this line when i am trying to return the records i get the above mentioned error
}
答案 0 :(得分:1)
您的GetRecords
方法返回IEnumerable
中的SourceModel
,其中包含0个或多个项目。 GetRecord
方法返回单个SourceModel
。因此,您需要将“ 0或更多”转换为单个结果:
public static SourceModel GetRecord(string ID)
{
var recs = Source.GetRecords(ID);
return recs.FirstOrDefault();
}
答案 1 :(得分:0)
错误是由于您的方法的return type
引起的。从数据库
IEnumerable<SourceModel>
时将其更改为返回IEnumerable<SourceModel>
public static IEnumerable<SourceModel> GetRecord(string ID)
{
var recs = Source.GetRecords(ID);
return recs; // no error now as you are returning list
}