我有一个网页,我给用户写笔记的选项。现在,当网页检查到一个用户是: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是一个集合,然后你只是分配最高值?如果你把它们放在一个字符串中,那么你需要将它们聚合在一起。