在我的模型中,我有:
public List<uint> Ids {get; set;}
我正在我的get调用中执行SQL,并且Ids的格式不是正确执行SQL语句的格式。
db.tableName.FromSql("SELECT * FROM tableName where( id in ({0}) && itemId = {1})", x.Ids, x.ItemId);
当前,我的x.Ids如下:
[0]:100 [1]:101
我希望我的x.Ids看起来像100、101,以便在我的where
子句中看起来像id in (100, 101)
。
我已经尝试过:var temp = string.Join(', ', x.Ids); //result: "100, 101"
,但这是一个字符串数组,我希望Int数组能使SQL正常工作。
变量x
被传递给我的方法。
是否有一种简单的方法来进行这种转换,或者我必须遍历字符串数组并转换并推入int数组?
答案 0 :(得分:0)
给出一个数组,您可以使用Array.ConvertAll
method:
int[] myInts = Array.ConvertAll(x.Ids, int.Parse);
LINQ解决方案与之类似,不同之处在于,您需要额外的ToArray
调用才能获取数组:
int[] myInts = x.Ids.Select(int.Parse).ToArray();
答案 1 :(得分:-1)
请记住,SQL查询是String
。
对字符串的此更改不会影响服务器上类型的解释。您必须用引号描述字符串。
我已更正您原始帖子中的几项内容:
WHERE
子句不应带有括号。"
终止。&&
,而是单词AND
。您对Join
的回答很正确,但不适用于上述更正:
db.tableName.FromSql("SELECT * FROM tableName where id in ({0}) and itemId = {1}", string.Join(', ', x.Ids), x.ItemId);