C# ではvar
、型のない型ではありません。これは実際には、型名全体を入力しなくてもオブジェクトを暗黙的に型指定する方法です。
例えば:
var someString = "Any String Value";
と
string someString = "Any String Value";
まったく同じ IL にコンパイルします。
したがって、あなたの場合、LINQ はIEnumerable<T>
コレクションを返します。ここで、T はmedlemar
オブジェクトの型です。
これはコレクションであるため、他のコレクションと同じようにアクセスする必要があります。1つの可能性はforeach
foreach(var m in medlem)
{
//Do Something
}
もう 1 つの可能性はToList()
、個々のメンバーを呼び出してからインデックスでアクセスすることです。
var medlemList = medlem.ToList();
var namn = medlemList[i].namn; // where i is some specific index in the collection
または、コレクション内の最初のオブジェクトを取得するだけの場合は、ユース ケースに応じていくつかの選択肢があります。
var firstMedlem = medlem.Single();
var firstMedlem = medlem.First();
var firstMedlem = medlem.SingleOrDefault();
var firstMedlem = medlem.FirstOrDefault();
上記のそれぞれはほぼ同じことを行いますが、コレクションにゼロまたは複数のオブジェクトがある場合は動作が異なります。
Single()
コレクション内の唯一のオブジェクトを返します。コレクションに複数のオブジェクトが含まれている場合、または含まれていない場合は、例外がスローされます。同様に、SingleOrDefault()
複数のオブジェクトがある場合は例外をスローしますが、返された値を返しdefault(T)
ます (T が値型の場合を除き、通常は null)。
First()
また、コレクションが空の場合に例外をスローし、デフォルト値を返す場合とFirstOrDefault()
同じように動作します。コレクションに複数の値がある場合、常に最初のメンバーを返すという点でメソッドとは異なります。First()
FirstOrDefault()
Single..()
したがってFirstOrDefault()
、コレクション自体が null でない限り、基本的に例外はスローされません。IEnumerable<T>
他のバリエーションは、コレクションの内容に応じて、1 つ以上のケースで例外をスローします。