a4a*_*hiq 4 c# sql linq entity-framework max
我这里有问题。我试图获取 sql 字段的最大值,
LastInvoiceNo = Convert.ToInt64(dbContext.InvoiceMaster.Max(e => e.InvoiceNo));
Run Code Online (Sandbox Code Playgroud)
但它给了我错误的值,因为“InvoiceNo”的列类型是 varchar。所以我尝试将其转换为 Int64 作为
LastInvoiceNo = dbContext.InvoiceMaster.Max(e =>Convert.ToInt64(e.InvoiceNo));
Run Code Online (Sandbox Code Playgroud)
和
LastInvoiceNo = dbContext.InvoiceMaster.Select(e => Int64.Parse(e.InvoiceNo)).Max();
Run Code Online (Sandbox Code Playgroud)
但它抛出了一个异常
LINQ to Entities 无法识别“Int64 Parse(System.String)”方法,并且该方法无法转换为存储表达式。
您收到的错误是因为 EF 试图将您的 linq 查询转换为实际的 SQL 语句,但它不能。
您可以做的是通过强制执行查询将数据带到本地,然后您将能够转换为 Int64 并检查 Max。
像这样的东西:
LastInvoiceNo = dbContext.InvoiceMaster.ToList().Max(e => Convert.ToInt64(e.InvoiceNo));
Run Code Online (Sandbox Code Playgroud)
如果该表中有数百万行,则不确定这是否是最好的选择。
干杯