Linq - Найти максимальное значение из столбца типа nvarchar в SQL Server - PullRequest
0 голосов
/ 21 ноября 2019

В моем столбце SQL Server у меня есть значения, как показано ниже.

3.2.31
5.6.81
8.0.3521
25

Когда я пытаюсь получить значение MAX, используя LINQ вместо 25, я получаю 8.0.3521. Ниже мой запрос LINQ.

var maxCode = InventoryDB.Products.where(p => p.Name == "Reva Health").select( m => m.Code).Max();

Тип столбца Code: nvarchar.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2019

Вы можете попробовать ниже выражение:

var maxCode = InventoryDB.Products.where(p => p.Name == "Reva Health")
.Select(l => new { 
                  s=Int32.Parse(l.Code.Substring(0,l.Code.IndexOf('.')!=-1?l.Code.IndexOf('.'):l.Code.Length)) 
                  })
.Max(i=>i.s);
0 голосов
/ 21 ноября 2019

Проблема в том, что у вас есть строка, а не число. Это сложно сделать в SQL Server. Может быть достаточно следующего:

select top (1) col
from t
order by try_convert(int, left(col, charindex('.', col) - 1)) desc,
         col desc;

Эта версия не идеальна. Он заказывает по номеру до первого периода, что достаточно для данных в вашем вопросе.

...