簡體   English   中英

C# Linq to SQL:如何表達“CONVERT([...] AS INT)”?

[英]C# Linq to SQL: How to express "CONVERT([...] AS INT)"?

在 MSSQL 中,您可以將字符串轉換為整數,如下所示:

CONVERT(INT, table.column)

Linq to SQL 是否有任何 C# 表達式會轉換成這個?

在 C# 中,您通常可以使用int.Parse()執行相同的操作,但不幸的是,嘗試在 Linq 查詢中使用int.Parse()導致錯誤:

方法“Int32 Parse(System.String)”不支持轉換為 SQL。

Linq to SQL 是否有任何 C# 表達式會轉換為CONVERT(INT, ...)

C# 有Convert.ToInt32()應該做你正在尋找的。

Convert.ToInt32應該可以工作。 查看這篇文章以獲取有關翻譯的信息。

對於 LINQ to entity,如果它只是您的模型和數據庫之間的不匹配,您可以使用帶有 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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM