1

以下の行でデータベースからいくつかのデータを取得しています。

IQueryable<user> UserList = DatabaseContext.Users.GetAll();

次のような UserList で何かを検索したい:

foreach (var User in UserList)
{
    if (User.type == (int)UserType.SuperUser)
    {
        IsRecordFound = true;
        break;
    }
}

次に、フラグの状態に応じて何かを行います。

if (!IsRecordFound)
{
    AesCrypto aesCrypto = new AesCrypto();
    user newuser = new user();
    newuser.username = DEFAULT_SUPER_USER_NAME;
    newuser.password = aesCrypto.Encrypt(DEFAULT_SUPER_USER_PASSWORD);
    newuser.type = (int)UserType.SuperUser;
    newuser.create_date = DateTime.Now;
    newuser.last_login = newuser.create_date;
    newuser.email_address = DEFAULT_SUPER_USER_EMAIL_ADDR;
    newuser.login_count = 1;

    DatabaseContext.Users.Add(newuser);
    if (!DatabaseContext.Save())
        return false;
}

LINQ などを使用して IQueryable インターフェイスで検索する簡単または実用的な方法はありますか?

4

4 に答える 4

3
if (!UserList.Any(x => x.Type == (int)UserType.SuperUser))
{
    AesCrypto aesCrypto = new AesCrypto();
    user newuser = new user();
    newuser.username = DEFAULT_SUPER_USER_NAME;
    newuser.password = aesCrypto.Encrypt(DEFAULT_SUPER_USER_PASSWORD);
    newuser.type = (int)UserType.SuperUser;
    newuser.create_date = DateTime.Now;
    newuser.last_login = newuser.create_date;
    newuser.email_address = DEFAULT_SUPER_USER_EMAIL_ADDR;
    newuser.login_count = 1;

    DatabaseContext.Users.Add(newuser);
    if (!DatabaseContext.Save())
        return false;
}
于 2013-02-05T10:49:36.593 に答える
0
UserList .Where(user => user.Type== (int)UserType.SuperUser);
于 2013-02-05T10:53:14.730 に答える
0

あなたはそれを次のように行うことができます

bool isSuperUser =  UserList.Any(a=>a.type==a.SuperUser)
于 2013-02-05T10:49:41.483 に答える
0

IQueryable を検索するには、使用しますwhere

var foundUsers = UserList.Where( usr => usr.Type == (int)UserTypes.SuperUser );

if( foundUsers == null && foundUsers.Count() == 0 ) // only one of these is required.. I forget which though :s
{
    AesCrypto aesCrypto = new AesCrypto();
    user newuser = new user();
    newuser.username = DEFAULT_SUPER_USER_NAME;
    newuser.password = aesCrypto.Encrypt(DEFAULT_SUPER_USER_PASSWORD);
    newuser.type = (int)UserType.SuperUser;
    newuser.create_date = DateTime.Now;
    newuser.last_login = newuser.create_date;
    newuser.email_address = DEFAULT_SUPER_USER_EMAIL_ADDR;
    newuser.login_count = 1;

    DatabaseContext.Users.Add(newuser);
    if (!DatabaseContext.Save())
        return false;
}
于 2013-02-05T10:52:46.153 に答える