C# Linq转SQL。如何表达 "CONVERT([...] AS INT)"?

问题描述 投票:30回答:3

在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# linq linq-to-sql
3个回答
33
投票

C#有 Convert.ToInt32() 应该可以达到你所需要的目的。


12
投票

Convert.ToInt32 应该可以。 查看 本文 以获得有关翻译的信息。


0
投票

对于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));
© www.soinside.com 2019 - 2024. All rights reserved.