私たちは人を手に入れる方法があります。私たちはEFとRia Servicesを使用しています。方法は今、私たちはGetPeopleを呼び出し、ある状況(例)で920人を返す。この情報をすべて網羅しています。私たちのアプリが成長して以来、私たちはこれを上限にするべきだと決めました - 500。私たちはまた、私たちが使うことができる一連のフィルターを持っています。年の1つです。だから、2012年のフィルターを検索に入れたとき、私は460人を返します。私たちのコードでは、我々が取る(500)を追加Linq Take and Ria Services
return _personSearchRepository.All().Where(x => x.ProgramID == programID && x.PersonType == "Person").Take(500);
にこの
return _personSearchRepository.All().Where(x => x.ProgramID == programID && x.PersonType == "Person");
から行ってきました - ここでは何の問題もなく - 私たちはフィルタなしで最初の検索では500人を返され、このコードを追加したときに問題があります。 しかし、我々は今年のフィルタを追加するとき - 私は460を戻すことを期待する私は、取り出して、あなたが.Take(500)
年後のフィルタを追加した場合、私は戻って460
私のviewModelでは、次のようなクエリを実行します。 - var query = _context.GetPeopleSearchByProgramIDQuery(_currentUser.ProgramID).Where(x => x.PersonStatus == "Active"); if(SelectedRecruitClass!= null) { query = query.Where(x => x.Year == SelectedYear.Year); } – gevjen
@gevjenクエリが実際にどの時点で実行されたか、そして 'Where'句が適用されたときに確認することができます。 SQLプロファイラは、実際に発行されたステートメントを判断するのに役立ちます。私の推測では、「トップ500」というSQLクエリが1つありますが、クライアント側でのみ適用されるような年フィルタはありません。 –
パーフェクト - ご協力いただきありがとうございます。 – gevjen