我有一个自定义类,如下
public class PhoneTypeListInfo
{
public string AccountNum { get; set; }
public int PhoneType { get; set; }
public string PhoneNum { get; set; }
}
我需要检索PhoneType
,由我提供的PhoneNumber
值进行查询。
所以我使用这个方法和查询。
protected int RetrievePhoneType(List<PhoneTypeListInfo> xPhoneTypeList, string info )
{
int type;
type = xPhoneTypeList.Where(p => p.PhoneNum == info).Select(p => p.PhoneType);
return type;
}
这不是正确的方式吗?还是我需要将其转换为int
?
编辑看起来可能有多个帐户具有相同的电话号码。我需要通过一个附加的where条款。然后使用FirstOrDefault()
Select
方法将返回一个集合。但是类型变量的类型是Int
类型。这就是您出现此错误的原因。
也许你应该考虑从收藏品中拿走一件。
如果要获取集合中的第一个项目,请使用LINQ FirstOrDefault
方法。
int type = xPhoneTypeList.Where(p => p.PhoneNum == info).Select(p => p.PhoneType)
.FirstOrDefault();
这将为您提供集合中的第一个项目。如果集合为空,它将为您提供默认值,即0。(假设PhoneType是数字类型)
为了避免返回一个IEnumerable集合,其中包含选择查询的所有可能答案,即使您认为应该只有一个答案,也可以在您的LINQ中添加
.FirstOrDefault();
并且它将返回单个整数。有许多额外的方法可以一起使用(或链接),以促进您的需求。