C# IEnumerable<;对象>;它包含一个int类型,我想放在括号之间

C# IEnumerable<;对象>;它包含一个int类型,我想放在括号之间,c#,sql,string,list,linq,C#,Sql,String,List,Linq,我正试图在数据库中创建一个临时表,以便内部连接它到另一个表 我有一个方法,它获取一个IEnumerable作为参数。 通过使用LINQ和String.Join()我能够在我需要的每个值之间插入一个字符串,例如String.Join(“),”,SapMaterialId。选择(id=>id.SapMaterialId) 这将创建一个如下所示的字符串 1),2),3),…但是我需要前面的括号”(“我正在尝试想出一个解决方案,它不会让我在代码中做额外的事情。例如,我可以做一个List List=str

我正试图在数据库中创建一个临时表,以便
内部连接它到另一个表

我有一个方法,它获取一个
IEnumerable
作为参数。 通过使用
LINQ
String.Join()
我能够在我需要的每个值之间插入一个字符串,例如
String.Join(“),”,SapMaterialId。选择(id=>id.SapMaterialId)
这将创建一个如下所示的字符串
1),2),3),…
但是我需要前面的括号
”(“
我正在尝试想出一个解决方案,它不会让我在代码中做额外的事情。例如,我可以做一个
List List=str.Split(“),”).ToList()
并做一个循环来添加前面的
对每一种价值观都是如此,但我绝对不喜欢这种方法


另外,我对这里的提问还比较陌生,所以非常感谢您提供的任何提示。 多谢各位

请注意,我不想使用使用IN(…)的SQL语句;因此我尝试创建一个临时表并使用它进行联接,但我需要使用(#)和(#)格式的字符串


为什么不干脆这样做呢

String.Join(", ", SapMaterialIDs.Select(id => id.SapMaterialId.ToString("(#)"))
顺便说一句,下一次,请明确指定您拥有的内容和需要的内容。例如,“我有一个int数组,需要它们以字符串形式出现,如
(1)、(2)、(3),…
:)


我不确定DB或联接与此有何关系,但如果您提供更多上下文,可能会有一种更简单的方法来完成您需要的操作。

为什么不简单地执行此操作

String.Join(", ", SapMaterialIDs.Select(id => id.SapMaterialId.ToString("(#)"))
顺便说一句,下一次,请明确指定您拥有的内容和需要的内容。例如,“我有一个int数组,需要它们以字符串形式出现,如
(1)、(2)、(3),…
:)


我不确定DB或联接与此有何关系,但如果您提供更多上下文,可能会有一种更简单的方法来完成您需要的操作。

另一种方法可以处理所有类型(而不仅仅是数字)只需在您的
连接
中以及
连接
的两侧包含开始括号和结束括号:

var result = $"({string.Join("), (", SapMaterialIDs.Select(id => id.SapMaterialId))})";
正如@andrew在评论中提到的,上述方法需要C#6,因为它使用的是。如果您使用的是旧版本,则可以改用串联:

var result = "(" + string.Join("), (", SapMaterialIDs.Select(id => id.SapMaterialId)) + ")";
正如注释中提到的@cwharris,如果
Select
语句返回零结果,则返回
“()”
。要解决此问题,您可以在末尾添加
Replace
方法来删除它们:

var result = $"({string.Join("), (", SapMaterialIDs.Select(id => id.SapMaterialId))})"
    .Replace("()", "");

另一种适用于所有类型(不仅仅是数字)的方法是在
Join
中以及
Join
的两侧简单地包含开始括号和结束括号:

var result = $"({string.Join("), (", SapMaterialIDs.Select(id => id.SapMaterialId))})";
正如@andrew在评论中提到的,上述方法需要C#6,因为它使用的是。如果您使用的是旧版本,则可以改用串联:

var result = "(" + string.Join("), (", SapMaterialIDs.Select(id => id.SapMaterialId)) + ")";
正如注释中提到的@cwharris,如果
Select
语句返回零结果,则返回
“()”
。要解决此问题,您可以在末尾添加
Replace
方法来删除它们:

var result = $"({string.Join("), (", SapMaterialIDs.Select(id => id.SapMaterialId))})"
    .Replace("()", "");

嗨@jonnhynick你能发布完整的代码吗?有了更多的背景,帮助你会更容易。是的,下次我会的;不过,我的问题已经得到了回答,但非常感谢。嗨@jonnhynick,你能发布完整的代码吗?有了更多的背景,帮助你会更容易。是的,下次我会的;不过,我的问题已经得到了回答,但非常感谢。很好的选择,虽然可能有点难读。为了记录在案,这需要C♯ 6(VS2015+)@Andrew True,字符串插值需要c#6。还添加了连接版本…这假设长度大于零。对于zero,结果将是
()
Nice选项,尽管可能有点难读。为了记录在案,这需要C♯ 6(VS2015+)@Andrew True,字符串插值需要c#6。还添加了连接版本…这假设长度大于零。对于零,结果将是
()
,我可能错了,但我相信我错了。(答案上的绿色标记)再次感谢您!简言之,我花了相当长的时间阅读C#,直到我决定发帖。我可能是错的,但我相信我就是这么做了。(答案上的绿色标记)再次感谢您!简而言之,我花了相当长的时间阅读C#,直到我决定发帖。