首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# LINQ to SQL 過濾空白行:Where 條件判斷字段非空非空白字符串

     編輯:程式設計綜合問答

場景

LINQ to SQL 查詢返回結果含「空白行」(關鍵字段為空串或空白字符),需在查詢層面過濾。

解決方案


// 假設實體類有 Name 字段
var validData = db.Table
    .Where(x => !string.IsNullOrWhiteSpace(x.Name)) // 核心:IsNullOrWhiteSpace
    .ToList();

關鍵方法對比

方法null""" ""\t\n""abc"
x.Name != nullfalsetruetruetruetrue
x.Name != ""異常falsetruetruetrue
!string.IsNullOrEmpty(x.Name)falsefalsetruetruetrue
!string.IsNullOrWhiteSpace(x.Name)falsefalsefalsefalsetrue

LINQ to SQL 轉譯 SQL


// IsNullOrWhiteSpace 會轉譯為類似:
WHERE (Name IS NOT NULL) AND (LTRIM(RTRIM(Name)) <> '')

在數據庫端完成過濾,避免拉取大量無效數據到內存。

多字段聯合過濾


var valid = db.Table.Where(x => 
    !string.IsNullOrWhiteSpace(x.Field1) && 
    !string.IsNullOrWhiteSpace(x.Field2)
).ToList();

擴展:自定義擴展方法


public static class QueryableExtensions {
    public static IQueryable WhereNotBlank(this IQueryable src, Expression> selector) {
        return src.Where(x => !string.IsNullOrWhiteSpace(selector.Compile()(x)));
    }
}
// 用法
var q = db.Table.WhereNotBlank(x => x.Name);

string.IsNullOrWhiteSpace 是 .NET 4.0+ 標準庫方法,一行代碼解決 null/空串/空白字符串三合一判斷,LINQ to SQL 完美支持翻譯為 SQL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved