You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dapper Extensions中编写Not Equal(不等于)查询子句?

实现方案

步骤1:补充AddressTown的非空、非空字符串查询条件

Dapper Extensions 内置了Operator.IsNotNull对应IS NOT NULL语法,Operator.Ne对应不等于(<>)语法,直接在原有谓词组里新增两个条件即可:

PredicateGroup pgMain = new PredicateGroup 
{ 
    Operator = GroupOperator.And, 
    Predicates = new List<IPredicate>() 
};
// 原有ID等于2的条件
pgMain.Predicates.Add(Predicates.Field<tblPeople>(f => f.ID, Operator.Eq, 2));  
// 新增AddressTown非空条件
pgMain.Predicates.Add(Predicates.Field<tblPeople>(f => f.AddressTown, Operator.IsNotNull, null));
// 新增AddressTown不等于空字符串条件
pgMain.Predicates.Add(Predicates.Field<tblPeople>(f => f.AddressTown, Operator.Ne, ""));

步骤2:添加排序规则

要实现ORDER BY Description,需要构造排序参数传入GetList方法:

// 构造升序排序规则
var sortRules = new List<ISort>
{
    Sort.Property<tblPeople>(f => f.Description, ascending: true)
};

步骤3:获取结果并处理去重

Dapper Extensions 原生的GetList方法不直接支持SELECT DISTINCT语法,你可以查询到匹配的tblPeople集合后,通过LINQ提取去重的Description字段,最终效果和目标SQL完全一致:

var peopleList = connection.GetList<tblPeople>(pgMain, sortRules).ToList();
// 提取去重的Description集合
var distinctDescriptions = peopleList.Select(p => p.Description).Distinct().ToList();

如果希望直接在SQL层面生成DISTINCT减少数据传输,也可以直接用Dapper原生查询结合上述生成的谓词条件拼接SQL,上述方案是兼容Dapper Extensions原生API的最低成本实现。

内容的提问来源于stack exchange,提问作者Rana Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:18:02