2009-04-30 52 views
2

我有一個需要更換與其他多個字符串在查詢使用LINQ to SQL和鏈接替換

from p in dx.Table 
where p.Field.Replace("A", "a").Replace("B", "b").ToLower() = SomeVar 
select p 

它提供了一個很好的一個SQL語句與相關REPLACE()的SQL命令。

所有好的:)

我需要做這在應用程序中的幾個疑問......於是我找了一些這方面的幫助;將如上以後作爲一個SQL打在服務器上/命令

它環視因爲沒有SQL EQ

作爲一個新手LINQ我不能使用正則表達式,似乎是有一個很好的方式我這樣做?

例如是否有可能將它作爲IQueryable「var result」來說,並將其傳遞給函數來添加需要的.Replace()並返回?我可以得到一個快速的例子,如果是的話?

編輯:這似乎工作!它看起來會是一個問題嗎?

var data = from p in dx.Videos select p; 
data = AddReplacements(data, checkMediaItem); 
theitem = data.FirstOrDefault(); 

...

public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem) 
{ 
    return DataSet.Where(p => 
      p.Title.Replace(" ", "-").Replace("&", "-").Replace("?", "-") == checkMediaItem); 
} 

回答

1

那豈不是更好的性能,扭轉你正在嘗試在這裏做,即重新格式化您正在檢查對字符串,而不是重新格式化數據在數據庫?

public IQueryable<Video> AddReplacements(IQueryable<Video> DataSet, string checkMediaItem) 
{ 
    var str = checkMediaItem.Replace("-", "?").Replace("&", "-").Replace("-", " ")); 
    return DataSet.Where(p => p.Title == str); 
} 

因此,你現在在數據庫與設定值進行比較的領域,而不是掃描表和每行中的轉換數據和比較這一點。