我有一个网页,我在其中向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!
答案 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是一个集合,然后你只是分配最高价值?如果你把它们放在一个字符串中,那么你需要将它们聚合在一起。