C#怎么把list中某个元素出现n次后的内容存入另一个list
比如一个list……"a""b""a""b""c""a""1""b"……怎么把出现第n个"a"以及之后出现的所有内容(包括不是a的)存入另一个LIST?...
比如一个list
……
"a"
"b"
"a"
"b"
"c"
"a"
"1"
"b"
……
怎么把出现第n个"a"以及之后出现的所有内容(包括不是a的)存入另一个LIST? 展开
……
"a"
"b"
"a"
"b"
"c"
"a"
"1"
"b"
……
怎么把出现第n个"a"以及之后出现的所有内容(包括不是a的)存入另一个LIST? 展开
3个回答
展开全部
static void Main(string[] args)
{
List<string> lst = new List<string>
{ "a", "b", "a", "b", "c", "a", "1", "b" };
foreach (string s in F(lst, "a", 2))
Console.Write(s + " ");
Console.ReadLine();
}
static List<string> F(List<string> lst, string a, int n)
{
//这前面还要判断lst和n是否符合约束,自己加
int i = 0;
int cnt = 0;
List<string> list = new List<string>();
for (; i < lst.Count; i++)
{
if (lst[i] == a)
cnt++;
if (cnt >= n)
list.Add(lst[i]);
}
return list;
}
展开全部
我也来写一个吧
List<string> Fun(List<string> list, string a, int n)
{
var aa = from a1 in list.Select((x, i) => new { x, i })
where a1.x == a
select new { a1.x, a1.i };
return list.Skip((from aaa in aa.Select((xa, xc) => new { xa, xc })
where aaa.xc >= n - 1
select aaa.xa.i + 1
).ToArray<int>()[0]).ToList();
}
static void Main(string[] args)
{
List<string> list = new List<string> { "a", "b", "a", "b", "c", "a", "1", "b", "z", "w" };
List<string> listnew = Fun(list, "b", 2);
Console.WriteLine(string.Join(" ", listnew));
Console.ReadLine();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先转换为数组list
遍历list,判断a出现的次数。当出现次数为n时,求出第n个“a”所在位置的索引。
然后用 CopyTo()把该索引开始往后的元素都复制到一个新的数组里。
把新的数组转换为集合。
遍历list,判断a出现的次数。当出现次数为n时,求出第n个“a”所在位置的索引。
然后用 CopyTo()把该索引开始往后的元素都复制到一个新的数组里。
把新的数组转换为集合。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询