我有一个如下的类和控制器
//class
public class Payment
{
public Guid ID { get; set; }
public string InvoiceNumber { get; set; }
public string ContactNumber { get; set; }
public string ConsumerName { get; set; }
}
//controller
public class TransPaymentController : Controller
{
public ActionResult Searching(int? page,string searchInvoiceNumber)
{
//Page Setting
int pageSize = 10;
int pageNumber = (page ?? 1);
IPagedList<Payment> payments = null;
payments= paymentRepo.GetList_Payments_InTableManualPayment(pageSize, pageNumber);
if (!String.IsNullOrEmpty(searchInvoiceNumber))
{
string data = payments.Where(s => s.InvoiceNumber.Contains(searchInvoiceNumber)); //the error is here
}
return null;
}
}
我收到如下错误。
无法隐式转换类型System.collections.generic.IEnumerable<Project.Dto.PaymentDto> to string
为什么会出现此错误?
答案 0 :(得分:0)
从外观上看,您的控制器只是在尝试查找发票编号。与将集合IEnumerable<Project.Dto.PaymentDto>
转换为单个元素string
有关的错误的性质。
考虑一下您的查询正在询问数据库:请找到发票编号包含searchInvoiceNumber
的所有发票。数据库可能返回零,一个或多个结果。字符串看起来像什么?这是个废话。
请尝试:
var data = payments.Where(s => s.InvoiceNumber.Contains(searchInvoiceNumber)).ToList();
现在数据包含零个,一个或多个PaymentDto
项目。由您决定如何处理。
请注意,到目前为止您的Payment
类尚未使用。如果您尝试直接从查询中填充该数据,则可能是一个单独的问题。