3

ExecuteQuery()を使用して、Entities.UserLevelタイプのIEnumerableを取得したいと思います。次のコードはうまく機能します。

using (CDataContext context = data.GetDataContext())
{
   string q = "SELECT *FROM UserLevel";
   IEnumerable<Entities.UserLevel> res = context.ExecuteQuery<Entities.UserLevel>(q);
}


public class UserLevel
{
   public int userID { get; set; }
   public int levID { get; set; }
}

ただし、問題は、データベースと同じUserLevelクラスでプロパティ名を使用する必要があることです。そうしないと、値を取得できません。クラス/プロパティ名に関係なく値を取得する方法はありますか?たとえば、上記の代わりに次のUserLevelクラスを使用したいと思います。

public class UserLevel
{
   public int UserIdentity { get; set; }
   public int LevelIdentity { get; set; }
}
4

1 に答える 1

3

確かに書くだけです。

var q = "SELECT userID as UserIdentity, levID as LevelIdentity FROM UserLevel";
var res = context.ExecuteQuery<UserLevelDTO>(q);

しかし、代わりにLinqを使用してみませんか?あなたは書くことができます:

var res = from u in context.UserLevel
          select new UserLevelDTO()
          {
             UserIdentity = u.userID,
             LevelIdentity = u.levID 
          };

独自のDTOクラスを作成する必要があります。

public class UserLevelDTO
{
   public int UserIdentity { get; set; }
   public int LevelIdentity { get; set; }
}
于 2012-10-11T18:51:23.477 に答える