我是.Net Web API的新手。
我想获取CreatedBy = 1的所有记录(这不是主键)。
我的模特
public class Subject
{
[Key]
public int Id { get; set; }
public int UniId { get; set; }
public bool IsActive { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public int CreatedBy { get; set; }
public int UpdatedBy { get; set; }
}
我在Controller中的get方法
public Subject Get(int id)
{
IQueryable<Subject> query;
return query = from Subjects in db.SubjectContext.Where(v => v.CreatedBy == id).ToList();
}
答案 0 :(得分:5)
主要问题是Get
中的Controller
方法设置为返回单个Subject
对象,而不是List<Subject>
。您的查询看起来是正确的。
主要变化需要如下
public List<Subject> Get(int id)
{
IQueryable<Subject> query;
return query = from Subjects in db.SubjectContext.Where(v => v.CreatedBy == id).ToList();
}
在旁注中,变量名id
不明确。使用createdById
之类的内容,乍看之下,id
变量代表了一个创建了许多Subjects
而不是Subject
的ID的用户。
而且,我会对方法名Get
说同样的话......得到什么? Get也非常接近属性声明中使用的C#关键字get
。它应该更具描述性。只是一些不会影响您的问题的快速笔记:)
最后我会注意到你从函数返回的方式是非正统的,虽然技术上是正确的并且会编译。您可以跳过return语句中的变量赋值,甚至可以完全跳过使用变量,只返回List<Subject>
..我还为DataContext添加了一个using语句,这是最佳实践:
public List<Subject> Get(int id)
{
using(var context = new YourDataContext())
{
var queryResult = (from Subjects in db.SubjectContext.Where(v => v.CreatedBy == id)).ToList();
return queryResult;
}
}
或没有LINQ语句,
public List<Subject> Get(int id)
{
using(var context = new YourDataContext())
{
return context.Subjects.Where(v => v.CreatedBy == id)).ToList();
}
}