c# - c#, 获取当前T在List中的索引
问题描述
我搜索了很多,我可能偶然发现了一些类似的东西,但它对我来说仍然是陌生的,因为我是 c# 的新手。
我想 从List<Tline>中获取对象Tline的当前索引, 我知道我可以简单地使用 int i 进行迭代。但我不明白为什么或如何将它作为我所在的当前iteam 的索引而不搜索任何内容。
Tline 有点像
public class Tline
{
public string Cd_m { get; set; }
public string cd_d { get; set; }
public string cd_c { get; set; }
...
}
我的问题在这里(用箭头表示)
class ACCS
{
internal void DBwrite(List<Tline> imoprtati)
{
OleDbConnection myAccessConn = null;
string sFld = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string dbName = "EDIM1.mdb";
dbName = Path.Combine(sFld, dbName);
string accessConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", dbName);
string sqlQuery = "INSERT INTO DOTes (`id`,`cd_m`,`cd_d`,`cd_c`,`nume`) values (?,?,?,?,?)";
myAccessConn = new OleDbConnection(accessConn);
int i = 2;
foreach (var insT in imoprtati)
{
using (OleDbCommand cmd = new OleDbCommand(sqlQuery, myAccessConn))
{
cmd.Connection.Open();
cmd.Parameters.AddWithValue("@id", i.ToString());
cmd.Parameters.AddWithValue("@cd_m", "2018");
cmd.Parameters.AddWithValue("@cd_d", "BO");
cmd.Parameters.AddWithValue("@cd_c", "C00128");
// Show current Tline Index ↓↓↓↓↓↓↓
cmd.Parameters.AddWithValue("@nume", (imoprtati.GetEnumerator().Current)); //trying anything
cmd.ExecuteNonQuery();
cmd.Connection.Close();
i++;
}
}
}
}
解决方案
imoprtati.GetEnumerator().Current
将不起作用,因为您正在创建一个具有自己位置的单独迭代器(当前在第一项之前)。您最好的选择可能是一个简单的计数器:
int index = 0;
foreach (var insT in imoprtati) {
// your stuff here...
index++;
}
有一个包含索引的LINQ 方法,但由于自定义结构迭代器、捕获的变量等(复杂主题),最终效率会降低。
推荐阅读
- java - 使用方法时“Int 无法转换为字符串”
- go - Golang 短变量声明显示错误未解决
- node.js - Pycharm with Electron - runnerw.exe:CreateProcess 失败,错误 193:%1 不是有效的 Win32 应用程序
- django - Django 使用 URL 参数在基于类的视图中查询数据库
- sql - 如何在 Maximo CMMS SQL where 子句中获取最新日期?
- javascript - 如何选择 FileReader 读取方法?
- python - 对低质量数字图像进行 OCR 的预处理方法?
- python - 如何将变量转换为 keras 层
- python - 循环数组集的问题
- godot - 运动状态实施