我有一個像myStoreProcedure
凡在存儲過程中
@personId VARCHAR(MAX)
SELECT IdNo, LastName + ', ' + FirstName + ' ' + MiddleName AS Name
FROM Person
WHERE CAST(Person.PersonId AS varchar(max)) in (@personId)
我想通過WHERE IN
列出基於PersonId
所有的人,但數據類型是varchar
。到目前爲止,這是我嘗試過的。
var p0 = p.Select(x => new { id = "'" + x.ToString() + "'" })
.Select(c => c.id).ToArray();
string personIds1 = string.Join(",", p0);
讓說,我有2, 5
PERSONID的,所以通過與上述結果的代碼加入Id
是
personIds1 = '2', '5'
現在,當我用參數調用myStoreProcedure
時,我沒有任何結果。
var list = myEntities.myStoreProcedure(personIds1).Select(t => new PersonEntity
{
IdNo = t.IdNo,
Name = t.Name,
}).ToList();
我的問題是:
如何創建一個存儲過程來讀取varchar
就像例如:
[email protected] = "'2', '5'" <-just an example
WHERE CAST(Person.PersonId AS varchar(max)) in (@personId)
這樣我就可以得到PersonId
2,5等。
PersonID是一個varchar字段還是一個數字字段? – Steve 2013-03-25 21:14:31
是一個Int數據類型,這是我的'Person'表的主鍵,我試圖將其轉換爲Varchar,以便我可以使用'Where In'。這是我的[參考](http://www.techonthenet.com/sql/in.php) – spajce 2013-03-25 21:18:15
我也可以建議你避免這種方式。您可以嘗試@rsenna sution,或者在選擇之前嘗試填充臨時表 - 在相同的連接/事務中。 – evgenyl 2013-03-25 22:06:50