序列包含多个匹配元素"调用存储过程时
本文关键字:quot 调用 存储过程 元素 包含多 | 更新日期: 2023-09-27 18:15:43
我想用MyList:
在我的页面上显示一个列表 public List<ResponseType> MyList(int param1, DateTime Date)
{
return db.spMyStoredProcedure(param1, param2).ExecuteTypedList<ResponseType>();
}
调用这个存储过程:
public StoredProcedure spMyStoredProcedure(int param1,DateTime Date){
StoredProcedure sp=new StoredProcedure("spMyStoredProcedure",this.Provider);
sp.Command.AddParameter("param1",LeadStatusID,DbType.Int32);
sp.Command.AddParameter("Date",Date,DbType.DateTime);
return sp;
}
使用这个类:
public class ResponseType
{
public string 1 { get; set; }
public bool2 { get; set; }
public DateTime 3 { get; set; }
...etc.
}
ResponseType继承另一个类,而这个类又继承另一个类。
错误消息"Sequence包含多个匹配元素"是否意味着ResponseType(或它继承的类)有多个声明?我似乎只声明了其中一个,这也是Visual Studio在我点击"转到声明"时引导我的地方。
我可以在SQL Server中使用我传递的相同参数执行存储过程,所以我不确定为什么列表无法显示。
我很确定您在其他地方使用SingleOrDefault
或Single
方法。只有当集合包含0或1个元素时,它们才会成功。为什么你不尝试FirstOrDefault
,它总是采取第一个元素(或defualt(type)
)?
查看SingleOrDefault:
可能出现的异常-
InvalidOperationException
-> 输入序列包含多个元素
ArgumentNullException
->来源为空另一种可能是在HttpPost
方法中调用First()
。就像
[HttpPost]
public JsonResult Test(int Id)
{
var query = myDb.Responses
.Where(y => y.Id==Id).First();
return Json(new { Test= query.Name}, JsonRequestBehavior.AllowGet);
}
如果你的Id不存在,这个错误就会发生
对不起大家,我的问题是我在ResponseType中定义了一个变量,然后又在它继承的类中定义了一个变量。
显然,您无法知道这一点,因为我没有包含继承的类。谢谢