无法隐式将类型'System.collections.generic.IEnumerable <project.dto.paymentdto>'转换为'string'

时间:2019-01-20 13:58:35

标签: c# asp.net-mvc

我有一个如下的类和控制器

 //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

为什么会出现此错误?

1 个答案:

答案 0 :(得分:0)

从外观上看,您的控制器只是在尝试查找发票编号。与将集合IEnumerable<Project.Dto.PaymentDto>转换为单个元素string有关的错误的性质。

考虑一下您的查询正在询问数据库:请找到发票编号包含searchInvoiceNumber的所有发票。数据库可能返回零,一个或多个结果。字符串看起来像什么?这是个废话。

请尝试:

var data = payments.Where(s => s.InvoiceNumber.Contains(searchInvoiceNumber)).ToList();

现在数据包含零个,一个或多个PaymentDto项目。由您决定如何处理。

请注意,到目前为止您的Payment类尚未使用。如果您尝试直接从查询中填充该数据,则可能是一个单独的问题。