C# 将sql语句的字符串数组转换为int数组

C# 将sql语句的字符串数组转换为int数组,c#,sql,arrays,entity-framework-core,C#,Sql,Arrays,Entity Framework Core,在我的模型中,我有: public List<uint> Ids {get; set;} 目前,我的x.ID如下所示: [0]:100[1]:101 我希望我的x.id看起来像100101,这样在我的where子句中,它们看起来像(100101)中的id 我尝试过:var-temp=string.Join(',',x.Ids)//结果:“100101”但这是一个字符串数组,我希望SQL使用Int数组。 变量x正在传递给我的方法 是否有一种简单的方法来进行转换,或者我必须循环字符串数

在我的模型中,我有:

public List<uint> Ids {get; set;}
目前,我的x.ID如下所示:

[0]:100[1]:101

我希望我的x.id看起来像100101,这样在我的
where
子句中,它们看起来像(100101)中的
id

我尝试过:
var-temp=string.Join(',',x.Ids)//结果:“100101”
但这是一个字符串数组,我希望SQL使用Int数组。 变量
x
正在传递给我的方法


是否有一种简单的方法来进行转换,或者我必须循环字符串数组并转换并推入int数组?

记住SQL查询是一个
字符串

对字符串的更改不会影响服务器上类型的解释。你必须用引号标出一个字符串

我已更正了您原始帖子中的几个项目:

  • WHERE
    子句周围不应该有括号
  • SQL字符串未以结束符
    终止
  • SQL中的and不是
    &&
    ,而是单词
  • 您的答案与
    Join
    一致,但不应与上述更正一起使用:

    db.tableName.FromSql("SELECT * FROM tableName where id in ({0}) and itemId = {1}", string.Join(', ', x.Ids), x.ItemId);
    

    给定一个数组,您可以使用:

    LINQ解决方案与此类似,只是需要额外的
    ToArray
    调用来获取数组:

    int[] myInts = x.Ids.Select(int.Parse).ToArray();
    

    可能是因为这允许Sql注入攻击。而且确实没有足够的信息来回答这个问题。什么是
    db
    ?什么是
    tableName
    ?我没有看到
    FromSql()
    ,而且这些看起来都不像标准的.Net类或方法。1.x.ids看起来像“[0]:100[1]:101”-到底是什么看起来像“mean”?2.
    int
    数组不能包含逗号或“看起来像”“任何事,
    Join
    都是正确的-那么你到底是什么意思?3.我认为你不理解SQL中的
    中的SQL
    ——建议你调查一下。看看Dapper。您的SQL注入问题将消失,并且它能够处理如果两个参数都是整数,则不可能进行SQL注入,OP没有对
    x.ItemId
    的数据类型进行注释,但这是问题的补充。一个简单的例子意味着应该应用模糊处理和省略。@ErikPhilips,“什么是db?什么是tableName?我没有看到FromSql()”语句的意图很清楚,如果不是为了实现,而是为了上下文:运行查询并返回结果。这来自Microsoft实体框架。因此,本质上,
    Array.ConvertAll()
    是数组上的一个
    map
    函数?@dumetrulo,是的,但它仍然需要迭代所有值,分别转换每个值。LINQ版本可以是给定的版本,也可以是
    .ConvertAll(Converter,Converter)
    。对于后者,您必须定义
    converter()
    方法,但它允许自定义类型转换,如
    map
    。您的意思是来自Javascript的
    Array.map()。
    
    int[] myInts = Array.ConvertAll(x.Ids, int.Parse);
    
    int[] myInts = x.Ids.Select(int.Parse).ToArray();