私は動的linqを使用していくつかの条件を解析しています。私はストアドプロシージャを書き、それを動的にフィルタリングしたい。'Contains'は文字列では機能しません。
これは私の手順です:
;WITH cte
AS
(
SELECT
ID
,[NO]
,Firstname
,Lastname
,PersonalNO
,ReferanceID
,CAST('' AS VARCHAR(MAX)) AS ReferanceNO
FROM dbo.Employees WHERE ReferanceID IS NULL
UNION ALL
SELECT
c.ID
,c.[NO]
,c.Firstname
,c.Lastname
,c.PersonalNO
,c.ReferanceID
,CASE
WHEN ct.ReferanceNO = ''
THEN CAST(ct.[NO] AS VARCHAR(MAX))
ELSE CAST(ct.[NO] AS VARCHAR(MAX))
END
FROM dbo.Employees c
INNER JOIN cte ct ON ct.ID = c.ReferanceID
)
SELECT * FROM cte
とC#で、私はこのプロシージャを呼び出しています。
public List<Employees> GetEmployees(string searchValue, int skip, int pageSize, string sortColumn, string sortColumnDir)
{
var query = DB.sp_GetConsultants().ToList();
var totalRecords = query.Count;
query = query.Where(searchValue).ToList(); // if the searchValue is value
//"PersonalNO.Contains(\"15\")" it filters, with this kind of value
//"Lastname.Contains(\"fish\")" it dose not, but with "Fish" it does. Is the matter with uppercase?
}
と私はテーブルの画像をアップロード:
問題は何ですか?
'query'リスト全体の内容を表示する(またはデバッガを使って列挙する)とどうなりますか?おそらく何かがあなたのストアドプロシージャに間違っていて、それはJohn Fisherを含めていないでしょう? – ekolis
私はお詫び申し上げます。 – www1986