Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# 如何查询列表<;T>;?_C#_Asp.net_Linq_Asp.net Web Api - Fatal编程技术网

C# 如何查询列表<;T>;?

C# 如何查询列表<;T>;?,c#,asp.net,linq,asp.net-web-api,C#,Asp.net,Linq,Asp.net Web Api,我是ASP.net和LINQ的新手,但是教程相当短。我正在创建一个WebAPI项目,并在我的模型下创建了一个名为gender的类,如下所示 public class Gender { public int Id { get; set; } public string Description { get; set; } public Language LanguageId { get; set; } public int InternalCode { get; se

我是ASP.net和LINQ的新手,但是教程相当短。我正在创建一个WebAPI项目,并在我的模型下创建了一个名为gender的类,如下所示

public class Gender
{
    public int Id { get; set; }
    public string Description { get; set; }
    public Language LanguageId { get; set; }
    public int InternalCode { get; set; }
    public bool isActive { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime UpdatedAt { get; set; }
}
我还没有创建一个链接到它的数据库,也没有使用实体框架,因为我还在学习它。我在控制器动作中创建了一个性别列表,仅用于培训目的。当我试图用LINQ查询列表以便能够返回正确的对象时,我在下面的gen in Gender中的
var query=from行得到一个编译器错误,我不确定原因

    // Show
    // URI GET + api/Gender/id/
    [HttpGet]
    public Gender Gender(int id)
    {
        var genders = new List<Gender>();

        genders.Add(new Gender { Id = 1, Description = "Male" });
        genders.Add(new Gender { Id = 2, Description = "Female" });

        var query = from gen in Gender
                       where gen.Id == id 
                       select gen;
        return query;
    }
//显示
//uriget+api/Gender/id/
[HttpGet]
公共性别(int id)
{
var genders=新列表();
添加(新的性别{Id=1,Description=“Male”});
添加(新的性别{Id=2,Description=“Female”});
var query=来自性别中的gen
其中gen.Id==Id
选择gen;
返回查询;
}
试试看

查询您的列表,
genders
,而不是类型
Gender

然后,您可以通过执行以下操作返回单个项目:

 return query.FirstOrDefault();
return genders.FirstOrDefault(gen => gen.Id == id);
当然,您可以通过执行以下操作压缩所有这些内容:

 return query.FirstOrDefault();
return genders.FirstOrDefault(gen => gen.Id == id);

没什么大不了的,但是如果
Id
是数据库中的主键,
SingleOrDefault
应该更合适。为一个项目提供一个Id,然后取回另一个共享该Id的项目听起来不正确。不一定
SingleOrDefault
意味着一个合同(它必须是唯一的),并可能导致性能损失,因为它(理论上)必须检查所有条目以确保只有一个条目。您应该询问是否希望在“查询”时间而不是“写入”时间强制执行合同。在这里也可以看到