Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq中的C查询_C#_Linq_List_Arraylist_Visual Studio 2015 - Fatal编程技术网

C# Linq中的C查询

C# Linq中的C查询,c#,linq,list,arraylist,visual-studio-2015,C#,Linq,List,Arraylist,Visual Studio 2015,我正在Visual Studio 2015中使用C。 我有一个列表magicItemList,我正在尝试使用Linq进行一个简单的查询,以获取一个与用户输入的Id匹配的对象。 这是我的代码: int itemId = Convert.ToInt32(Console.ReadLine()); var query = from MagicItem magicItem in magicItemList where magicItem.Id == itemId

我正在Visual Studio 2015中使用C。 我有一个列表magicItemList,我正在尝试使用Linq进行一个简单的查询,以获取一个与用户输入的Id匹配的对象。 这是我的代码:

int itemId = Convert.ToInt32(Console.ReadLine());

var query = from MagicItem magicItem in magicItemList
                where magicItem.Id == itemId
                select magicItem;
让我困惑的是,查询的类型是System.Collections.Generic.IEnumerable,因此我无法将其任何属性作为普通对象获取

有没有一种方法可以将其转换为普通对象?提前谢谢

这是我的魔法课:

class MagicItem
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int StockLevel { get; set; }
    }
您可以使用FirstOrDefault获取项目。如果没有id为的项,您将得到null。这就是为什么您必须检查null

var item = magicItemList.FirstOrDefault(x => x.Id = itemId);
if(item != null)
{
    //do something with item
}
使用代码,您将获得一个集合,因为您正在检查一个属性,并且将获得集合中与此属性匹配的所有项


有关更多信息,请查看

它将获取与您的条件magicItem.Id==itemId匹配的所有实例。
如果您确定这将是单个项,我建议使用query.FirstOrDefault来获取该项

问题在于,您本身不会获得一个元素:在代码级别,未知id是否唯一

您可以使用或获取与条件匹配的第一个元素:

var query = (from MagicItem magicItem in magicItemList
                where magicItem.Id == itemId
                select magicItem).First();