Цепочка нескольких предложений WHERE - PullRequest
0 голосов
/ 08 мая 2018

В зависимости от условий я пытаюсь объединить несколько предложений WHERE в переменную TransactionDataList. Пожалуйста, посоветуйте, как правильно это сделать.

Я получаю эту ошибку:

Ошибка CS0266 Невозможно неявно преобразовать тип 'System.Collections.Generic.IEnumerable' в 'System.Collections.Generic.List'. Существует явное преобразование (вам не хватает приведения?)

Код:

List<Transaction> QueriedTransactionList;
QueriedTransactionList = db.Transactions.ToList();

List<TransactionViewModel> TransactionDataList = QueriedTransactionList.Select(x => new TransactionViewModel
{
    TTransactionID = x.TTransactionID,
    BatchID = x.BatchID,
    TransactionDateTime = x.TransactionDateTime,
    TransactionStatus = x.TransactionStatus,
    TaxPayerName = x.Card.TaxPayer.TaxPayerName,
    TaxPayerEmail = x.Card.TaxPayer.TaxPayerEmail
}).GroupBy(x => x.BatchID).Select(x => x.LastOrDefault()).OrderByDescending(x => x.TTransactionID).ToList();

if (Request.QueryString["Port"] != "")
{
    int Port = Convert.ToInt32(Request.QueryString["Port"]);
    TransactionDataList = TransactionDataList.Where(x => x.Card.PortID == Port);
}

if (Request.QueryString["Status"] != "")
{
    string Status = Request.QueryString["Status"];
    TransactionDataList = TransactionDataList.Where(x => x.TransactionStatus == Status);
}

if (Request.QueryString["TIN"] != "")
{
    string TIN = Request.QueryString["TIN"];
    TransactionDataList = TransactionDataList.Where(x => x.Card.TaxPayerTIN == TIN);
}

1 Ответ

0 голосов
/ 08 мая 2018

A List<T> является IEnumerable<T>, но IEnunumerable<T> не гарантируется как список.Тип возврата от Select и Where - IEnumerable<T>, и его нельзя присвоить TransactionDataList.

Изменить

List<TransactionViewModel> TransactionDataList = QueriedTransactionList.Select...

на

IEnumerable<TransactionViewModel> TransactionDataList = QueriedTransactionList.Select...

и ошибки уйдут.Если вам нужен доступ к методам, предоставляемым IList<T>, вам необходимо преобразовать обратно в список, используя метод расширения ToList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...