【问题标题】:Query string on LINQLINQ 上的查询字符串
【发布时间】:2011-07-05 06:44:28
【问题描述】:

我正在尝试做下一件事:我在 c# 上有下一个代码:

b.Text = myDataContext.purchases.Count().ToString();

我有页面例如:items.aspx?nID=144

我怎样才能构造一个 linq 查询,该查询将采用查询字符串参数并通过地址上显示的id (nID) 检查items 表中的值?

表格有设计例如:id, title, bla, main

【问题讨论】:

    标签: c# .net asp.net linq query-string


    【解决方案1】:

    通过 Lambda 表达式:

    int nID;
    string qs = QueryString["nID"];
    if (Int32.TryParse(qs, nID)
        myDataContext.purchases.Where(p => p.id == nID);
        // Other options if nID is a primary key
        //myDataContext.purchases.FirstOrDefault(p => p.id == nID);
        //myDataContext.purchases.SingleOrDefault(p => p.id == nID);
    

    通过 LINQ 查询:

    int nID;
    string qs = QueryString["nID"];
    if (Int32.TryParse(qs, nID)
        var purchase = from p in myDataContext.purchases
            where p.id == nID
            select p;
    

    【讨论】:

    • 我仍然不会混合 UI/ASP.NET 逻辑,例如获取 nID 和查询本身,我会在另一个业务相关类中进行查询。
    • @Davide Piras 好吧,我解决了一个问题——如何进行查询。我认为@Bside 可以轻松升级代码。更新了答案
    【解决方案2】:

    如果我理解正确,您只是想从 QueryString 获取 nID 参数,然后在某些 linq 查询中重用其值以从数据库中获取数据。您可以使用下面的代码(在 ASPX 页面内)实现它:

    int nID;
    
    string value = Request.QueryString["nID"];
    if(int.TryParse(value, out nID))
    {
        // your linq query
    }
    

    【讨论】:

    • 谢谢。我对我在该问题上发布的相同代码还有另一个问题:b.Text = myDataContext.purchases.Count().ToString(); .......我在这里怎么做:main = true; ?
    • 我认为您应该为第二个问题创建一个单独的帖子。它会更容易找到,更多的人可以给你他们的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多