4

探しているユーザーのユーザーIDを持つ既存のデータベースと通信しているSQLデータベースから最初のユーザーを取得しようとしています。これと 2 番目のエラーが表示されます。Entity model

ブロック内のSystem.Func<iomnientitylibrary.user,bool>一部の 戻り値の型はデリゲートの戻り値の型に暗黙的に変換できないため、ラムダ式をデリゲート の型に変換できません。

intタイプを に暗黙的に変換することはできませんbool

public user GetUser(int userID)
{
     using (var context = new iomniEntities())
    {
        user u = context.users.FirstOrDefault(user => user.userID);

        return u;
    }
}

context.users.ToList()正常に動作していますが、それほど非効率になりたくありません。

4

7 に答える 7

7

式を使用する場合:user u = context.users.FirstOrDefault(user => user.userID); 戻り値の型は userID (これは Lambda 式の 2 番目の部分によって決定されます) であり、ステートメントが宣言に従って期待する型 'user' ではありません。user u

user したがって、 userID が「userID」であるシングルを返したい場合は、次を使用します。

user u = context.users.FirstOrDefault(user => user.userID==userID);

または、次も使用できます。

user u = context.users
         .Where(user => user.UserId==UserID)
         .Select(user => user).Single();

また、 Using ステートメントがあることを確認してください。using System.Linq;

于 2013-07-23T15:06:08.557 に答える
1

構文が少しずれているだけだと思います。試す:

public user GetUser(int intUserID)
{
     using (var context = new iomniEntities())
    {
        user u = context.users.Where(u => u.userID == intUserID).FirstOrDefault();

        return u;
    }
}

または、バージョンを保持するには、修正する必要があります。

public user GetUser(int intUserID)
{
     using (var context = new iomniEntities())
    {
        user u = context.users.FirstOrDefault(user => user.userID == intUserID);

        return u;
    }
}
于 2013-07-23T00:20:45.943 に答える
0

あなたのラムダは間違っています。 a を返す必要がbooleanあり、あなたのものは.userID.

次のような何らかの比較を使用する必要があります。

user => user.userID == 10

FirstOrDefaultは、ラムダ式に一致する項目の最初またはデフォルト (この場合は null)を返します。リストの最初のアイテムが返されません。これは、あなたが望んでいると思います。context.Users データ型が何であるかを知らなければ、これを行うためのより良い方法を教えることはできません。

次のようなものを使用できます。

user => user != null

于 2013-07-23T00:54:33.087 に答える