C# 如何返回匹配项的计数
我有一个分类的通用列表。我想返回符合条件的前10个 有点像下面的方法,但只有前10项C# 如何返回匹配项的计数,c#,.net-2.0,C#,.net 2.0,我有一个分类的通用列表。我想返回符合条件的前10个 有点像下面的方法,但只有前10项 mySortedlist.FindAll(delegate(myclass tmp){ return tmp.ID == 123;}); 如下所示: int count = 0; mySortedlist.FindAll(delegate(myclass tmp){ return (tmp.ID == 123 && ++count <= 10);}); int count=0; m
mySortedlist.FindAll(delegate(myclass tmp){ return tmp.ID == 123;});
如下所示:
int count = 0;
mySortedlist.FindAll(delegate(myclass tmp){ return (tmp.ID == 123 && ++count <= 10);});
int count=0;
mySortedlist.FindAll(委托(myclass tmp){return(tmp.ID==123&&++count类似于以下内容:
int count = 0;
mySortedlist.FindAll(delegate(myclass tmp){ return (tmp.ID == 123 && ++count <= 10);});
int count=0;
mySortedlist.FindAll(delegate(myclass tmp){return(tmp.ID==123&&++count好的,这将返回一个列表。您可以创建自己的等价物可枚举。非常容易地:
public static IEnumerable<T> Take<T>(IEnumerable<T> source, int size)
{
int count = 0;
foreach (T item in source)
{
yield return item;
count++;
if (count == size)
{
yield break;
}
}
}
公共静态IEnumerable Take(IEnumerable源代码,int-size)
{
整数计数=0;
foreach(源中的T项)
{
收益回报项目;
计数++;
如果(计数==大小)
{
屈服断裂;
}
}
}
然后您可以使用:
List<myclass> filtered = mySortedlist.FindAll(delagate(myclass tmp) {
return tmp.ID == 123;
});
List<myclass> list = new List<myclass>(Helper.Take(filtered, 10));
List filtered=mySortedlist.FindAll(delagate(myclass tmp){
返回tmp.ID==123;
});
列表=新列表(Helper.Take(filtered,10));
另一种选择是使用LINQ,这样你就可以尽可能多地使用LINQ——如果可能的话,最好是在你瞄准.NET 2.0的时候使用C#3。这会让你的生活变得更简单:)好吧,这将返回一个列表。你可以创建自己的等价物可枚举。非常容易地:
public static IEnumerable<T> Take<T>(IEnumerable<T> source, int size)
{
int count = 0;
foreach (T item in source)
{
yield return item;
count++;
if (count == size)
{
yield break;
}
}
}
公共静态IEnumerable Take(IEnumerable源代码,int-size)
{
整数计数=0;
foreach(源中的T项)
{
收益回报项目;
计数++;
如果(计数==大小)
{
屈服断裂;
}
}
}
然后您可以使用:
List<myclass> filtered = mySortedlist.FindAll(delagate(myclass tmp) {
return tmp.ID == 123;
});
List<myclass> list = new List<myclass>(Helper.Take(filtered, 10));
List filtered=mySortedlist.FindAll(delagate(myclass tmp){
返回tmp.ID==123;
});
列表=新列表(Helper.Take(filtered,10));
另一个选择是使用LINQ,这样你就可以尽可能多地使用LINQ——理想的情况是,即使在你瞄准.NET2.0的时候,如果可能的话,也可以使用C#3。这会让你的生活更简单:)+1,必须热爱委托范围;-(而且,不要挑剔,delegate(){}
需要进行拼写检查;-)+1-很好-但是对于一个新思维来说,它会提出比它回答的问题更多的问题。@Brad Haha,我只是复制粘贴了他的委托,我现在就更改它!我个人会尽量避免在这样的谓词中使用副作用。它很容易以意想不到的方式搞砸。+1,必须喜欢委托范围。-(而且,不要挑剔,delegate(){}
需要进行拼写检查。;-+1-很好-但是对于一个新思维来说,这会提出比回答更多的问题。@Brad Haha,我刚刚复制粘贴了他的委托,我现在就更改它!我个人会尽量避免在这样的谓词中使用副作用。这很容易以意想不到的方式搞砸。