1

私はこのようなモデルを持っています

public partial class TableNames
{

    public string Name { get; set; }
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int IntId { get; set; }
}

次に、コントローラーで、そのモデルから最大IntIdを取得しようとしています。

var max = from c in db.TableNames
          select c;

int? Max = max.AsQueryable().Max(x => x.IntId); //This isntruction throws an error
int IntId = ( Max == null ? 1 : Max + 1);

テーブルにレコードがない(空の)場合、コントローラーはこのエラーをスローします

The cast to value type 'Int32' failed because the materialized value is null. 
Either the result type's generic parameter or the query must use a nullable type.

どうすれば修正できますか?

4

3 に答える 3

3

代わりにこれを試してください:

int? Max = max.AsQueryable().Max(x => (int?)x.IntId);
于 2012-12-12T17:16:42.243 に答える
3

Nullableを処理せず、デフォルト値(Splendorのコードに基づく)が必要な場合は、次のようなことを行うことができます。

int Max = max.AsQueryable().Max(x => (int?)x.IntId) ?? 1;

于 2014-10-17T21:25:33.313 に答える
0

試す:

max.Where(i => i.IntId.HasValue).Select(i => i.IntId.Value).Max()
于 2012-12-12T17:20:44.287 に答える