web-dev-qa-db-ja.com

Linq to Entityで最大IDを取得するにはどうすればよいですか?

ID列UserIDを持つテーブルUserがありますが、最大UserIDを返すコードの正しいLinq to Entity行は何ですか?

私はもう試した:

using (MyDBEntities db = new MyDBEntities())
{
    var User = db.Users.Last();
    // or
    var User = db.Users.Max();

    return user.UserID;
}

しかし、LastMaxはサポートされていないようです。

何か案は?

75
Ray

こうやって

db.Users.OrderByDescending(u => u.UserId).FirstOrDefault();
141
Jonas Kongslund

これを試して

int intIdt = db.Users.Max(u => u.UserId);

更新:

レコードがない場合、上記のコードを使用して例外を生成しますこれを試してください

int? intIdt = db.Users.Max(u => (int?)u.UserId);
96
Thiago Valente

ニサプリエト

Users user = bd.Users.Where(u=> u.UserAge > 21).Max(u => u.UserID); 

mAXはフィールドと同じタイプの変数を返すため、この場合はユーザーオブジェクトではなくINTです。

11
Minyie Diaz
var max = db.Users.DefaultIfEmpty().Max(r => r == null ? 0 : r.ModelID);

dbにレコードがない場合、例外なしで0を返します。

10
Harsha.Vaswani

asyncおよびawait機能を使用している場合、次のようになります。

User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync();
3
Psi-Ed

追加したエンティティのIDを取得する最適な方法は次のとおりです。

public int InsertEntity(Entity factor)
{
    Db.Entities.Add(factor);
    Db.SaveChanges();
    var id = factor.id;
    return id;
}
0
Michel Lozada