帮助以亚音速编写 linq 查询

发布于 2024-08-29 04:48:39 字数 853 浏览 5 评论 0原文

我正忙于编写一些扩展方法,到目前为止进展顺利。 我有一个 getCities 方法,它接受 IQueryable qry,并应该返回 qry 中具有城市区域类型的所有区域。

我尝试使用 linq 来做到这一点,但放弃了,目前正在使用 for 循环。 它有效,但它困扰着我。我已经在底部注释掉了我提出的 linq 语句,但这不起作用。

for 循环正确返回记录,我注释掉的 linq 查询从不返回任何内容。

一个区域只能有 1 个 Region_Type,但亚音速使其成为一个集合,这就是我使用 item.Region_Types.First() 来获取区域 Region_Type 的原因。

public static IQueryable<Region> getCities(this IQueryable<Region> qry)
    {
        List<Region> returnCol = new List<Region>();
        foreach (var item in qry)
        {
            if (item.Region_Types.First().Name.ToLower().Trim().Equals("city"))
            {
                returnCol.Add(item);
            }
        }

        return returnCol.AsQueryable();

        //return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city"));
    }

I'm busy writing some extension methods and so far have been going fine.
I have a method getCities that takes in an IQueryable qry and is supposed to return all of the regions in qry that have a region type of city.

I tried using linq to do it, but gave up and am currently using a for loop.
It works, but its bugging me. I have commented out at the bottom the linq statement i have come up with, that doesn't work.

The for loop returns records correctly, the linq query i commented out never returns anything.

A region can only have 1 Region_Type, but subsonic makes it a collection, which is why i'm using item.Region_Types.First() to get the regions Region_Type.

public static IQueryable<Region> getCities(this IQueryable<Region> qry)
    {
        List<Region> returnCol = new List<Region>();
        foreach (var item in qry)
        {
            if (item.Region_Types.First().Name.ToLower().Trim().Equals("city"))
            {
                returnCol.Add(item);
            }
        }

        return returnCol.AsQueryable();

        //return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city"));
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无名指的心愿 2024-09-05 04:48:39

Where() 返回 IEnumerable,而不是 IQueryable,您应该在语句末尾使用 .AsQueryable():

return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city")).AsQueryable();

Where() returns an IEnumerable, not an IQueryable, you should use .AsQueryable() at the end of the statement:

return qry.Where(t => t.Region_Types.First().Name.ToLower().Trim().Equals("city")).AsQueryable();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文