0

List 型の Sources のプロパティを持つ MyConnection というオブジェクトがあります。接続に "" の Source がある List 内のすべての MyConnections を見つけるための linq コードの記述に問題があります。

私はこれを試しましたが、実行されないようです..

MyConnection initialActivity = currentActivities.ToList().Where(x => x.Sources.Contains(String.Empty));
4

3 に答える 3

1

WhereIEnumerable<MyConnection>単一ではないを返しますMyConnection。したがって、すべてをaで列挙するforeachか、1つのfeをで取ることができますFirst

IEnumerable<MyConnection> allWithEmptySource = currentActivities
    .Where(con => con.Sources.Any(s => string.IsNullOrEmpty(s)));
if(allWithEmptySource.Any())
{
    MyConnection first = allWithEmptySource.First();
}
于 2012-12-13T16:26:02.340 に答える
0

すべてではなく、「」のソースを持つ1つのアクティビティのみを取得しようとしている場合は、次を使用します。

MyConnection initialActivity = currentActivities.ToList()
    .FirstOrDefault(x => x.Sources.Contains(String.Empty));

そのような活動がない場合はあなたに与えますnull、そして1つ以上ある場合は最初のものです。

の代わりにFirstOrDefault、次を使用します。

  • First最初のものを提供しますが、例外がない場合は例外をスローします
  • Single単一の一致を与え、0または>1の一致があるという例外をスローします
  • SingleOrDefault単一の一致または一致なしを提供し、一致が1つを超える場合はスローして例外を発生させます。

それらすべてが必要な場合は、戻り値のタイプはIEnumerable<MyConnection>1つではなく、になります。

IEnumerable<MyConnection> initialActivities = = currentActivities.ToList()
    .Where(x => x.Sources.Contains(String.Empty));

次に、これを上書きするか、またはforeachを呼び出してリストまたは配列を取得できます。ToListToArray

注意:ここでは、回線の途中で電話をかける必要はないでしょう。.ToList()

于 2012-12-13T16:23:02.410 に答える
0

.Where()一致する要素のシーケンスを返します。

それを type の変数に割り当てることはできませんMyConnection

代わりに、.Last()1 つの要素を取得するようなメソッドを呼び出すことができます。

于 2012-12-13T16:20:41.893 に答える