Если свойство BatchID
имеет тип int
, вы не можете использовать Contains
, так как оно работает с массивом. Вы можете проверить значение напрямую, используя оператор ==
.
Поскольку вы используете тот же параметр string
(QueryString
), чтобы также получить значение идентификатора, вы должны использовать метод TryParse
для безопасного анализа строки в значении переменной int (, если оно является допустимым строковым представлением значения int ) и используйте его. Если ваше значение BatchID
всегда больше, чем 0
, вы можете инициализировать локальную переменную равной 0, и если строка запроса имеет допустимое числовое значение, проанализируйте ее и обновите локальную переменную и используйте ее в выражении LINQ.
int id = 0;
if (Int32.TryParse(QueryString, out id))
{
}
var results = db.Transactions
.Where(x => x.Card.InCome.InComePayerName.Contains(QueryString) ||
x.Card.InCome.InComePayerEmail.Contains(QueryString) ||
x.Card.InCome.InComePayerTIN.Contains(QueryString) ||
x.Card.Port.PortName.Contains(QueryString) ||
x.BatchID == id
)
.OrderByDescending(x => x.TTransactionID)
.GroupBy(x => x.BatchID)
.Select(x => x.FirstOrDefault())
.ToList();