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



我有一个自定义类,如下

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

并且它将返回单个整数。有许多额外的方法可以一起使用(或链接),以促进您的需求。

最新更新