问题描述
|
我有一个网页,可以向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
我想要这样:
测试
测试1
测试2 ...
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>
。您可以决定是否稍后再整理该列表。
编辑:Equiso进行了很好的观察,因为您实际上返回的是匿名类型的“ 4”,而不是由于“ 6”语法而导致的“ 3”。我想将他的答案与我的答案结合起来并运行:
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是一个集合,然后您只是在分配最高值?如果将它们放在一个字符串中,则需要将它们聚合在一起。