如何从LINQ2SQL查询中获取文本



我有一个网页,我给用户写笔记的选项。现在,当网页检查到一个用户是: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
Test2…

tbShowNote是一个TextBox!

你只要求第一个备忘录,所以你得到的是这个。如果你想让它在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是字符串类型,那么你执行的LINQ查询返回给你一个IQueryable<string>。你可以决定以后是否要把这个列表放平。

Edit: 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);

问题是在linq查询的select部分,您正在以匿名类型包装您的结果,这就是为什么当您调用ToString()时您会看到{ Memo = test }。您可能希望它像这样:

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

之后showMemo将只包含字符串。

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

最新更新