关于用C#对List<>中去除元素的问题!
我的代码:classProgram{staticvoidMain(string[]args){stringbasePath=@"D:\Doc\wordcount.mdb"...
我的代码:
class Program
{
static void Main(string[] args)
{
string basePath = @"D:\Doc\wordcount.mdb";
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + basePath;
string sql = "select * from [wordcount]";
List<WordInfo> list = new List<WordInfo>();
using (OleDbConnection conn = new OleDbConnection(connstr))
{
try
{
OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
WordInfo tmp = new WordInfo();
tmp.word = reader.GetString(1);
tmp.flag = 0;
list.Add(tmp);
}
reader.Close();
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine("异常:" + ex.Message);
}
}
int i = 0;
while (i <= list.Count())
{
var aa = from tt in list where tt.word == list[i].word select tt;
if(aa.Count() == 4)
{
list.Remove(list[i]);
continue;
}
i++;
}
}
}
想去除list中出现次数为4的某重复元素,可是执行时提示索引超出界限,错误发生在最后那个while循环,请问如何修改代码! 展开
class Program
{
static void Main(string[] args)
{
string basePath = @"D:\Doc\wordcount.mdb";
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + basePath;
string sql = "select * from [wordcount]";
List<WordInfo> list = new List<WordInfo>();
using (OleDbConnection conn = new OleDbConnection(connstr))
{
try
{
OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
WordInfo tmp = new WordInfo();
tmp.word = reader.GetString(1);
tmp.flag = 0;
list.Add(tmp);
}
reader.Close();
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine("异常:" + ex.Message);
}
}
int i = 0;
while (i <= list.Count())
{
var aa = from tt in list where tt.word == list[i].word select tt;
if(aa.Count() == 4)
{
list.Remove(list[i]);
continue;
}
i++;
}
}
}
想去除list中出现次数为4的某重复元素,可是执行时提示索引超出界限,错误发生在最后那个while循环,请问如何修改代码! 展开
2个回答
展开全部
while (i <= list.Count()) 改成while (i < list.Count()) 要么把int i = 0;改成int i = 1;
追问
嗯嗯。。可是还有个问题就是,我使用“list.Remove(list[i]);‘remove掉这个元素的时候,并不是remove掉了全部四个,只去除掉了一个,其他三个依然存在,请问该该怎么修改代码?
追答
你加了if条件当然只有满足条件了才移除,不加四个就全部移除了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-12-06 · 知道合伙人数码行家
关注
展开全部
while (i < list.Count())
索引从0开始的
索引从0开始的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询