在MSSQL中,你可以将一个字符串转换成一个整数,就像这样。
CONVERT(INT, table.column)
有没有什么C#表达式可以让Linq转SQL翻译成这样?
在C#中,你通常可以通过使用 int.Parse()
但不幸的是,试图使用 int.Parse()
在Linq查询中导致错误。
方法'Int32 Parse(System.String)'不支持翻译成SQL。
是否有任何C#表达式可以将Linq转SQL翻译为 CONVERT(INT, ...)
?
C#有 Convert.ToInt32()
应该可以达到你所需要的目的。
Convert.ToInt32 应该可以。 查看 本文 以获得有关翻译的信息。
对于LINQ到实体,如果只是你的模型和数据库之间的不匹配,你可以使用EF Core的valueconverter克服这个问题。
public OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<mymodel>()
.Property(e => e.myModelIntColumn) // this column is a string in the db
.HasConversion(new ValueConverter<int?, string>(m => m.HasValue ? m.ToString().Substring(0,10) : null, db => int.Parse(db ?? "0")));
}
而在我的LINQ中,我可以使用位比较。
MyDBSet.Where( e => (BitsWanted == 0 || ( e.myModelIntColumn & BitsWanted ) > 0));