动态Linq核心

时间:2020-01-16 18:38:18

标签: linq asp.net-core dynamic-linq

嗨,我正在使用Jqwidgets网格显示我的数据。它有可能使用过滤器,但是如果您在服务器端过滤记录,则必须建立自己的查询。在使用Linq的过程中,我想到了将动态Linq库用于Asp网络核心。问题是没有很多示例或说明如何执行此操作。但是我现在已经忙了好几天,而且还没走得太远。我有一个普通的Linq查询:

 var Mut = from M in _DB.Mutations
                  join S in _DB.Shifts on M.ShiftId equals S.ShiftId
                  join U in _DB.RoosterUsers on M.UserId equals U.RoosterUserId
                  join D in deps on M.UserId equals D.UserId
                  join DD in _DB.Departements on D.DepartementID equals DD.DepartementId
                  select new MutationModel
                  {
                      MutId=M.MutationId,
                      Naam=U.FirstName + " " + U.LastName,
                      UserId=M.UserId,
                      Departement= DD.DepartementName,
                      MutationType = S.publicName,
                      MutationGroup = S.ShiftType.ToString(),
                      DateTot =M.DateTill,
                      TijdVan=M.DateStartOn,
                      TijdTot=M.DateTill,
                      Status=CreateStatus(M.Tentative, M.ApprovedOn, M.Processed, M.CancelRefId, M.Deleted)
                  };

此查询运行正常,并为我提供了网格所需的所有数据。

然后是过滤器,我想使用System.Linq.Dynamic.Core库添加动态Linq查询 但这是到目前为止我能正常工作的地方:

var outQuery = Mut.Where("Status = @0 and UserId = @1", "Nieuw", "KLM22940").Select("Status");

我现在的问题: 1.在where子句中如果我使fieldname变量,我将得到一个错误。这该怎么做?? 2.在“选择子句”中,如何添加多个列? (实际上我只想输出所有列。)

  1. 最好是看一个例子。有没有人使用Dynamic Linq为JQWidgets Grid构建动态linq查询?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

您试图通过哪种方式在where子句中使用fieldname变量?

如果要输出所有列,可以使用ToList() 喜欢

var outQuery = Mut.Where("Status = @0 and UserId = @1", "Nieuw", "KLM22940").ToList();

如果要获取某些特定的列,可以使用Select子句

var outQuery = Mut.Where("Status = @0 and UserId = @1", "Nieuw", "KLM22940").Select("new(Status,UserId )");

此Select子句创建包含Status和UserId属性的数据类,并返回该数据类的实例序列。