无法将IEnumerable <int>转换为int Linq查询

时间:2016-04-07 17:09:09

标签: linq list

我有一个自定义类,如下所示

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()

2 个答案:

答案 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();

它将返回一个整数。有许多其他方法可以一起使用(或链接),以便完全满足您的需求。