我必须根据用户偏好在网页上设置不同标签加载的标签文本。
我有以下代码放在标签加载事件上(可能是错误的!)
string memberid = Session["MemberID"].ToString();
string locationid = Session["LocationID"].ToString();
string userName = Membership.GetUser().UserName;
string uuf1 = "UnitUserField1";
MyEntities lblUUF1Text = new MyEntities();
lblUUF1.Text = lblUUF1Text.tblUserPreferences
.Where(p => p.MemberID == memberid && p.LocationID == locationid && p.Username == userName && p.ColumnName == uuf1)
.Select(p => p.Alias)
.ToString();
但是当我运行它时,返回的标签文本是:
System.Data.Objects.ObjectQuery`1 [System.String]
有人能指出我的方式错误。我现在的感觉非常非常厚。
答案 0 :(得分:2)
你需要.First()
lblUUF1.Text = lblUUF1Text.tblUserPreferences
.Where(p => p.MemberID == memberid && p.LocationID == locationid && p.Username == userName && p.ColumnName == uuf1)
.Select(p => p.Alias).First().ToString();
答案 1 :(得分:2)
您正在编写查询,然后要求将该查询转换为字符串。您只想要该查询的第一个结果吗?如果是这样,很容易:
lblUUF1.Text = lblUUF1Text.tblUserPreferences
.Where(p => p.MemberID == memberid &&
p.LocationID == locationid &&
p.Username == userName && p.ColumnName == uuf1)
.Select(p => p.Alias)
.First();
(我假设p.Alias
的类型已经是string
,但您包含了对ToString
的调用,试图将查询强制转换为字符串以使其成为编译。)
请注意,如果没有结果,则会出现异常情况。否则它将取得第一个结果。其他选择是:
Single()
SingleOrDefault()
,存储在局部变量中,如果结果不为空,则设置标签文本。FirstOrDefault()
。答案 2 :(得分:0)
ToString()将返回您看到的对象类型,您需要做的是:
lblUUF1.Text = lblUUF1Text.tblUserPreferences
.Where(p => p.MemberID == memberid && p.LocationID == locationid && p.Username == userName && p.ColumnName == uuf1)
.Select(p => p.Alias).SingleOrDefault();