在 C# 中,var
不是无类型类型。它实际上是一种隐式键入对象的方法,而无需键入整个类型名称。
例如:
var someString = "Any String Value";
和
string someString = "Any String Value";
编译成完全相同的 IL。
因此,在您的情况下,LINQ 返回一个IEnumerable<T>
集合,其中 T 是您的medlemar
对象的类型。
由于它是一个集合,因此您需要像访问任何其他集合一样访问它。一种可能性是使用foreach
foreach(var m in medlem)
{
//Do Something
}
另一种可能性是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)
(通常为null,T为值类型时除外)。
First()
如果集合为空并返回默认值,则其FirstOrDefault()
行为方式与 whereFirst()
将抛出异常的方式相同。FirstOrDefault()
它们与Single..()
方法的不同之处在于,如果集合具有多个值,它们将始终返回第一个成员。
所以基本上,FirstOrDefault()
除非集合本身为空,否则永远不会抛出异常。根据IEnumerable<T>
集合的内容,其他变体将在一种或多种情况下引发异常。