无法隐式转换IEnumerable类型

时间:2019-06-07 07:24:35

标签: c#

我正在尝试根据传入的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
}

2 个答案:

答案 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
 }