개체에 LINQ가 결합 된 데이터의 다른 실행을위한 좋은 방법이라고 생각했습니다. 실제로, 그것은 여기 개체에 Linq - boondoggle?
이 상응IEnumerable<MyModel> data =
(from a in AList
from b in BList.Where(r => r.AId == a.Id)
from c in CList.Where(r => r.BId == b.Id)
from d in DList.Where(r => r.SomeId == myId && r.Some2Id == c.Some2Id)
// . . . . . .
는 LINQ 아니 었 우리가
a,b,c,d
에 몇, 몇 백, 3K 및 3.5K 기록을 가지고 있었다 것입니다 ... 일을하는 나쁜 방법을 제공 그 일을하는 것에 대해 대단하다고 생각하니? 현실에서 는, 다음은 60 배 빠른 사실
var dTemp = DList.Where(r => r.SomeId == myId).ToList();
var cTemp = CList.Where(c => dTemp.Any(d => d.Some2Id == c.Some2Id)).ToList();
IEnumerable<MyModel> data =
(from a in AList
from b in BList.Where(r => r.AId == a.Id)
from c in cTemp.Where(r => r.BId == b.Id)
// . . . . . .
을에, 훨씬 빠르게 작동 그리고 나는 this article
Q 건너 온 : 단일 LINQ를 포기하지 않고이 쿼리를 향상시킬 수있는 방법이 있나요?
또는 성능이 문제가되는 경우 조인 형식의 개체에 대한 LINQ를 피하고 일부 순차적 호출로 대체해야합니다.
은'A','b'와'c'에 가입. ''Join' (https://docs.microsoft.com/en-gb/dotnet/api/system.linq.enumerable.join?view=netframework-4.7) 함수 대신에'where' '에스? – Reddog
LINQ를 덜 공격적으로 생각하십시오. "틀림 없으므로 프레임 워크를 깨뜨려 야합니다."보통 시작하기 가장 좋은 장소는 아닙니다. –
@EdPlunkett하시기 바랍니다. 나는 그것이 부러 졌다고 결코 말하지 않는다. 하지만 옵티 마이저가 필요하기 때문에 보이는 것처럼 보이지 않습니다. –