如何从LINQ2SQL查询中获取文本?

时间:2011-04-14 21:27:25

标签: c# linq linq-to-sql

我有一个网页,我在其中向USER提供写笔记的选项。现在,当网页检查到USER是:abc时,它会从MEMO表中提取注释。

以下是我在Page_Load()中的代码:

using (EntityMemoDataContext em = new EntityMemoDataContext())
            {
                int getEntity = Int16.Parse(Session["EntityIdSelected"].ToString());
                var showMemo = from r in em.EntityMemoVs_1s
                               where r.EntityID == getEntity
                               select r.Memo;

                tbShowNote.Text = String.Join(@"<br />", showMemo);
            }

tbShowNote向我展示了这样的价值:

test<br />test1<br />test1<br />test4<br />test4

我想要这样:

  

测试
  Test1的
  测试2 ...

tbShowNote是一个TextBox!

3 个答案:

答案 0 :(得分:1)

你只要求提供第一份备忘录,这就是你所得到的。如果你想要用html中的每一行枚举它们,你可以这样做:

    using (EntityMemoDataContext em = new EntityMemoDataContext())
    {
        int getEntity1 = Int16.Parse(Session["EntityIdSelected"].ToString());
        var showMemo = from r in em.EntityMemoVs_1s
                       where r.EntityID == getEntity1
                       select new
                       {
                           r.Memo
                       };
        tbShowNote.Text = String.Join(@"<br />", showMemo);
    }

关键点是如果r.Memo是string类型,那么你执行的LINQ查询会给你一个IQueryable<string>。您可以决定以后是否要将该列表展平。

编辑 Equiso做了一个很好的观察,因为你实际上返回的是IQueryable匿名类型,而不是IQueryable<string> new { ... }语法。我会说将他的答案与我的答案结合起来并与之一起运行:

var showMemo = from r in em.EntityMemoVs_1s
               where r.EntityID == getEntity1
               select r.Memo;

tbShowNote.Text = String.Join(@"<br />", showMemo);

答案 1 :(得分:1)

问题在于您的linq查询的select部分,您将结果包装为匿名类型,这就是为什么当您致电ToString()时,您会看到{ Memo = test }。你可能想要这样:

var showMemo = from r in em.EntityMemoVs_1s
               where r.EntityID == getEntity1
               select r.Memo;

之后showMemo将只包含字符串。

答案 2 :(得分:0)

看起来你的showMemo是一个集合,然后你只是分配最高价值?如果你把它们放在一个字符串中,那么你需要将它们聚合在一起。