Учитывая следующие классы,
public class MyClass
{
public string Property { get; set; } //mapped to column 'property'
}
public class MyContext : DbContext
{
public DbSet<MyClass> MyClasses { get; set; } //mapped to table dbo.MyClasses
}
Я пытаюсь сгенерировать следующий запрос SQL, используя Linq to SQL и EF Core 3.1.
SELECT * FROM dbo.MyClasses
WHERE property > 'constant'
Любая помощь приветствуется.
Попытка 1:
var result = dbContext.MyClasses.Where(c => c.Property > "constant").ToList();
//Does not compile
Попытка 2:
var result = dbContext.MyClasses.Where(c => c.Property.CompareTo("constant") > 0).ToList();
//SELECT * FROM dbo.MyClasses
//WHERE
//CASE
// WHEN property = 'constant' THEN 0
// WHEN property > 'constant' THEN 1
// WHEN property < 'constant' THEN -1
//END > 0
string
data не определяет операторы сравнения, поэтому вы должны использовать методыstring.Compare
илиstring.CompareTo
, которые в настоящее время не имеют хорошей трансляции SQL. Либо примите текущий неэффективный перевод и подождите, пока RF Core улучшит его в какой-то будущей версии, либо используйте решение / обходной путь из моего ответа на сообщение, отмеченное как дублирующееся. - person Ivan Stoev   schedule 13.01.2020