【问题标题】:LINQ ExecuteQueryLINQ 执行查询
【发布时间】:2012-10-11 18:46:41
【问题描述】:

我想使用 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; }
}

【问题讨论】:

标签: c# linq linq-to-sql entity


【解决方案1】:

一定要写。

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; }
}

【讨论】:

  • 谢谢。我的应用程序需要复杂的搜索选项,而我不知道用户想要搜索哪些字段,所以我选择使用 ExecuteQuery。你知道一些更好的方法吗?
  • @mrd 那么你需要建立一个动态的sql查询吗?还有一个dynamic library for linq
猜你喜欢
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
相关资源
最近更新 更多