私はLinqの初心者ですが、その多くは今は完全に混乱しています。Linq:余分な 'Where'節を追加すると、ランダムな結果が得られます
LinqFlickrライブラリをhttp://linqflickr.codeplex.comからダウンロードして使用しました。しかし、私はLinqについての理解が不足していると思う。 LinqFlickrプロジェクトには私が続けるための多くの文書はありません。
次のコードを実行すると、ユーザー名文字列が空白の場合、正常に実行され、特定のタグ付きの写真が返されます。しかし、ユーザー名があれば、それは特定のユーザーによって以前の結果を精緻化する必要があります。代わりに、私にはランダムな写真がたくさんあります。
var photos = (from ph in context.Photos
where
ph.SearchMode == SearchMode.TagsOnly
&& ph.SearchText == tag
&& ph.PhotoSize == PhotoSize.Small
&& ph.Extras == (ExtrasOption.Owner_Name | ExtrasOption.Date_Taken)
select ph);
if (username != "")
{
string personId = (from people in context.Peoples
where
people.Username == username
select people.Id).First();
photos = photos.Where(q => q.NsId == personId) ;
}
photos = photos.Take(10);
私は、このようなLinqPadやMetaLinqなど、いくつかのデバッグツールを使用してみましたが、私は彼らとそれを解決することができていません。
また、私のLinqクエリは1つのクエリで作成できますが、Linq初心者が理解できるように説明してください。
、 'String.IsNullOrEmpty側の注意点として、(ユーザー名)'ユーザ名 'よりも優れている= ""' – ipavlic
は、string.IsNullOrWhiteSpace(ユーザー名)があります!!!さらに良い。 –
@ipavlic、@ A.R:どうやって?確かにそれはOPが実際にテストしようとしているものに正確に依存します。 (確かに、私はここでニックピッキングしています。ほとんどの場合、IsNullOrEmptyまたはIsNullOrWhiteSpaceが良いオプションになります) – LukeH