【问题标题】:Querystring display details查询字符串显示详细信息
【发布时间】:2014-03-03 13:31:11
【问题描述】:

我得到了这个 tblDocument 表,它与其他几个表有一对多的关系。我创建了这个显示文档内容的查询字符串。在这个解决方案中,我只显示 DocPerson id。我试图做的是显示位于 tblPerson 表中的人的姓名。有人可以帮我吗?

    if (!IsPostBack)
    {
        string strId = Request.QueryString["id"];
        int id;
        if (int.TryParse(strId, out id))
        {
            var db = new MyModelContext();
            var p = db.tblDocuments.SingleOrDefault(x => x.DocId == id);
            if (p != null)
            {

                lblCaseNr.Text = p.DocNr;
                lblPerson.Text = p.DocPerson.ToString();
                lblCourt.Text = p.DocCourt.ToString();
                lblYear.Text = p.Docyear.ToString();
                lblResume.Text = p.DocResume;
                lblResult.Text = p.DocResult;
                lblLaw.Text = p.DocLaw.ToString();

            }
        }
    }
}

【问题讨论】:

  • 您的代码有什么问题(我已经看到了 DocPerson?)?它会抛出错误吗?此外,如果属性已经是字符串,则无需再执行 ToString()。
  • DocPerson 是一个 int 并且是 Person 的 ID。所以 ToString() 是必要的

标签: asp.net linq request.querystring


【解决方案1】:

对于您的 LINQ 表达式,请尝试以下操作:

var q = from d in db.tblDocuments join p in db.tblPerson 
          on d.DocId equals p.DocId
          where d.DocId == id
          select new {d.DocId, p.DocPerson}

如果您需要访问其他字段,只需将它们添加到您的 select new 子句中即可。

【讨论】:

  • 你想在哪里添加 linq 表达式?
  • 用这个替换你当前的LINQ 表达式。这会给你一个匿名类型。为了访问这些属性,您可以使用foreach 语句进行循环。查看here了解更多信息。
猜你喜欢
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多