C# 通过多个数组循环以连接
我有3个数组。两个是字符串数组,一个是日期/时间数组。我从用户输入中提取了所有3个。每个数组总是会有相同数量的条目,所以我想做的是能够一次遍历所有3个条目来生成一个字符串 我试着:C# 通过多个数组循环以连接,c#,C#,我有3个数组。两个是字符串数组,一个是日期/时间数组。我从用户输入中提取了所有3个。每个数组总是会有相同数量的条目,所以我想做的是能够一次遍历所有3个条目来生成一个字符串 我试着: List<string> results = new List<string>(); // select foreach (string line in array1) { foreach (strin
List<string> results = new List<string>();
// select
foreach (string line in array1)
{
foreach (string lines in array2)
{
foreach (DateTime date in datearray1)
{
results.Add("select * from table1 d, table2 c where d.specheader = c.specheader and c.true_false = true and d.number = " + lines.ToString() + " and d.date = '" + date.ToShortDateString() + "' and d.specnum like '%" + line.ToString() + "';");
}
}
}
results.ToArray();
foreach (string line in results)
{
MessageBox.Show(line);
}
列表结果=新列表();
//挑选
foreach(数组1中的字符串行)
{
foreach(数组中的字符串行2)
{
foreach(datearray1中的DateTime日期)
{
结果.Add(“从表1 d、表2 c中选择*,其中d.specheader=c.specheader和c.true\U false=true和d.number=“+lines.ToString()+”和d.date=”“+date.ToSortDateString()+”,和d.specnum类似“%”+line.ToString()+“;”;
}
}
}
结果:ToArray();
foreach(结果中的字符串行)
{
MessageBox.Show(行);
}
用户将信息输入到3个框中,我只是尝试根据输入连接sql语句。然而,当我试着这样做时,当我只有2个条目时,它循环了6次。是否有一种方法可以同时使用所有3个数组连接字符串(如数组1的条目1、数组2的条目1、数组3的条目1-然后继续创建下一个字符串、数组1的条目2、数组2的条目2、数组3的条目2等)
如有任何意见,将不胜感激。谢谢大家! 如果所有项目的条目数相同,则可以简单地执行for循环
for (int 1 = 0; i < datearray1.length; i++)
{
results.Add("select * from table1 d, table2 c
where d.specheader = c.specheader and c.true_false = true
and d.number = " + array2[i].ToString() + "
and d.date = '" + datearray1[i].ToShortDateString() + "'
and d.specnum like '%" + array1[i].ToString() + "';");
}
for(int 1=0;i
因为循环是嵌套的,所以得到的是array2
的每个值都与array1
中的每个值相结合(与datearray1
类似)。这就是得到太多结果的原因
您的循环将按照预期的方式工作(我使用了类似的局部变量,以避免重新键入结果。添加行,并明确代码与您的代码有何不同):
for(int i=0;i
附带说明:以这种方式构建数据库查询效率低下且非常不安全(请阅读“Sql注入”了解原因)。如果使用存储过程,您会看到更好的结果。正如第一位评论者所说(恶心)不要像那样将字符串串联到SQL中。您需要设置SQL命令,然后传入参数
但是,当您询问如何将多个数组中的数据合并到一个字符串中时,这与问题无关
迭代其中一个数组,如果它们都有相同的计数,您将在其中整齐地获得数据
for(int i = 0; i < array1.Length; i++)
{
results.Add(string.format("Hello you! {0} , {1}, {2}", array1[i], array2[i], datearray[i])
}
for(int i=0;i
这将获得您想要的结果,但您的代码目前存在漏洞。您需要改变方法。不要在C#代码中使用SQL语句的字符串连接。请阅读SQL注入。因此,我阅读了SQL注入。生成的SQL查询将显示在一个窗口中,仅供我复制。我是jus我不想节省时间,因为通常有很多这样的记录。但是我只想复制文本(这将是生成的SQL命令)并将其粘贴到以后使用。从这个意义上讲,我仍然有风险吗?因为我将能够在命令运行之前看到它,它不是自动的。或者您可以使用参数化的SqlCommand,而不仅仅是存储过程。
for(int i = 0; i < array1.Length; i++)
{
results.Add(string.format("Hello you! {0} , {1}, {2}", array1[i], array2[i], datearray[i])
}