【问题标题】:Entity Framework query to return list with simple filter使用简单过滤器返回列表的实体框架查询
【发布时间】:2020-05-17 19:19:07
【问题描述】:

是否有一种简单的方法可以修改此代码以仅返回 LocationID 与我尝试作为参数传递的 id 匹配的记录?不用说,这不会编译。我认为 Entity Framework 是为了让事情变得更简单,但我在网上搜索过,找不到一个可以理解的例子来说明如何分配一个简单的查询,其中单个表/实体中的字段匹配一个数字。

public async Task<List<PC>> GetPCsAsync(int id)
{
   // Get our data. Don't yet know how to feed the variable to EF/Linq
   PCList = await (from p in db.PC 
   select new PC {p.LocationID = id}).ToListAsync();
   return PCList;
}

谢谢。

【问题讨论】:

    标签: .net-core razor-pages entity-framework-core-3.1


    【解决方案1】:

    如果你想使用查询语法来做这件事,它会是这样的:

    PCList = await (from p in db.PC 
                    where p.LocationID == id
                    select p).ToListAsync();
    

    这里有一个link 来了解查询和方法语法之间的区别。

    【讨论】:

    • 谢谢。我今天试试这个。
    • 再次感谢。当我给它一个文字参数时,这很有效。但是,当我尝试使用 Model.OurLoc (对于“id”)传递参数时,我没有得到任何输出。这是我作为一个不称职的程序员必须尝试弄清楚的事情 - 我似乎并没有得到 .Net Core 中非常严格的作用域工作方式。
    【解决方案2】:
    var list = db.PC.Where(x=>x.LocationID == id).ToList();
    

    异步

    var listAsync = await db.PC.Where(x=>x.LocationID == id).ToListAsync();
    

    希望对你有帮助!

    【讨论】:

    • 非常感谢。我刚刚再次登录,现在是英国晚上 11 点,所以我明天试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2018-01-11
    • 1970-01-01
    相关资源
    最近更新 更多