2013-12-20 33 views
1

我從數據庫獲取數據,我需要檢查用戶輸入的匹配數據。 不幸的是,由於數據庫記錄中有太多的空間,我沒有正確理解它。如何修剪具有多個空格的數據庫數據?

_usersinapplicationroles.All().Where(a => a.ApplicationRoleId == iAppRoleId && (Regex.Replace(a.User.DisplayName, @"\s\s+", " ").Trim() == Regex.Replace(strDisplayName, @"\s\s+", " ").Trim())).AsQueryable(); 

上述表達式是錯誤的:由於regex在a.user.DisplayName之前未找到'a'。

請更正此錯誤。

回答

0

能否請您試試這個...

RegexOptions options = RegexOptions.None; 
Regex regex = new Regex(@"[ ]{2,}", options); 

替換下面

Regex.Replace(strDisplayName, @"\s\s+", " "). 

strDisplayName.Replace(strDisplayName, @" "); 
+0

什麼是 '節奏'? –

+1

@AlbertoSolano對不起..感謝 –

0

從字符串中刪除空格,請使用以下行:

string yourStringNoSpaces = yourString.Replace(" ", String.Empty); 

通過這種方式,您將使用:

_usersinapplicationroles.All().Where(a => a.ApplicationRoleId == iAppRoleId && a.User.DisplayName.Replace(" ", String.Empty) == strDisplayName.Replace(" ", String.Empty)).AsQueryable(); 

上面一行進行了測試使用LinqPad一個簡單的查詢:

void Main() 
{ 
    List<Thing> things = new List<Thing>(); 
    things.Add(new Thing(){ 
     Name = "test" 
    }); 

    string testString = "te st"; 

    var result = things.Where (x => x.Name == testString.Replace(" ", String.Empty)).FirstOrDefault(); 

    Console.WriteLine(result.Name); 
} 

class Thing 
{ 
    public string Name {get;set;} 
} 
+0

我試過上面的查詢不工作。 – user3106578

+0

@ user3106578你有哪個錯誤?我用一個例子更新了答案。 –

+0

名稱本身在數據庫中有很多空間。我需要避免代碼中的數據庫數據空間。 – user3106578