我有一个自定义类,如下所示
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()
答案 0 :(得分:3)
Select
方法将返回一个集合。但类型变量的类型是Int
类型。这就是你得到这个错误的原因。
您可以考虑从该系列中选择一件物品。
如果您想从集合中获取第一项,请使用LINQ FirstOrDefault
方法。
int type = xPhoneTypeList.Where(p => p.PhoneNum == info).Select(p => p.PhoneType)
.FirstOrDefault();
这将为您提供该集合中的第一个项目。如果集合为空,它将为您提供默认值,即0。(假设PhoneType是数字类型)
答案 1 :(得分:1)
为了避免返回选择查询的所有可能答案的IEnumerable集合,即使您认为应该只有一个,请附加LINQ
.FirstOrDefault();
它将返回一个整数。有许多其他方法可以一起使用(或链接),以便完全满足您的需求。