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
}
list(最初の10要素、2番目の150、3番目の200)を制限すると、実行result.Count()!=0
してmyByte=result.First()
待機時間が1時間かかる場合があります。それで、カウントを高速化する方法、またはresult
「迅速な」方法で何かが含まれているかどうかを確認する方法はありますか?