我有一些字节数组的列表,我使用Linq将它们组合/检查彼此。这些列表和数组的长度可以不同。问题是当我尝试计算结果时。即使我添加了
当我执行
.Take(1)
子句,事情也没有改变。为了更好地理解,我将发布一些代码。函数Permute()
会将特定数组的所有排列返回给我。List<byte[]> firstList =new List<byte[]>();
List<byte[]> secondList=new List<byte[]>();
List<byte[]> thirdList =new List<byte[]>();
IEnumerable<byte[]> sql = (
from rid in firstList
from s in secondList
from p in thirdList
from per in Permute(s)
where per.SequenceEqual(p)
select rid
);
IEnumerable<byte[]> result = (from s in sql
where sql.Count(item =>item.SequenceEqual(s)) == 10
select s.ToArray()
).Take(1);
if (result.Count() != 0)
{
byte[] myByte=result.First();
//Do something
}
当我执行
result.Count()!=0
和myByte=result.First()
时,等待的时间可能长达一小时,即使我限制列表(第一个有十个元素,第二个有150个元素,第三个有200个元素)。
那么,是否有任何方法可以加快计数或者快速检查result
中是否包含任何内容?
from per in Permute(s) where per.SequenceEqual(p)
? - SLaksp
的排列。这样做就失去了意义。 - SLaks