1

person-list (persons) から特定の人 (ID による) を返すクエリを作成したいと考えています。

 public Person getThisID(int pID)
 {
     var res = from p in persons
                         where p.pID == pID
                         select p;
     return res;
 }

しかし、キャストの問題に関するエラーが発生しました。Personにキャストしようとしましresたが、うまくいきません。どうすれば解決できますか?

4

10 に答える 10

2

そのクエリはIEnumerable<Person>、単一ではなくを返しますPerson。これは、where が複数の結果を返す可能性があるためです。あなたの結果に追加FirstOrDefault()すると、あなたは良いです:

public Person getThisID(int pID)
{
    var res = from p in persons where p.pID == pID select p;
    return res.FirstOrDefault();
}

これは、条件に一致する最初のインスタンスを返します。それ以外の場合はデフォルトですnull

短くするために、ラムダ式で LinQ メソッドを使用することもできます。

return persons.FirstOrDefault(p => p.pID == pID);
//or...
return persons.Single(p => p.pID == pID);
于 2013-11-06T12:17:49.473 に答える
0

次のスニペットを使用できます

 persons.FirstOrDefault(p => p.id == pID);
于 2013-11-06T12:23:28.850 に答える
0

非常に簡単:

public Person getThisID(int pID)
{
    return persons.FirstOrDefault(p=> p.pID == pID);
}
于 2013-11-06T16:11:34.987 に答える