我正在制作asp.net mvc4网络应用程序。我在我的控制器中编写了联系表单函数,用于发送用户的反馈。我正在使用System.Net.Mail类。
我正在使用Simplemembership,并使用字符串Email属性扩展了UserProfile。
如何登录用户电子邮件?我希望将它包含在已发送的消息中,所以我可以回答。
我试图使用:
var em = from m in db.UserProfiles.Where(a => a.UserName.Contains(User.Identity.Name)) select m.Email;
string email = em.ToString();
但在发送的邮件中我有:
SELECT
[Extent1].[Email] AS [Email]
FROM [dbo].[UserProfile] AS [Extent1]
WHERE [Extent1].[UserName] LIKE @p__linq__0 ESCAPE N'~'
答案 0 :(得分:0)
要检索数据库的单个条目,您必须选择使用First()
方法返回的第一行:
string email = db.UserProfiles
.Where(a => a.UserName.Contains(User.Identity.Name))
.First().Email;
希望它有所帮助!
答案 1 :(得分:0)
你已经有了正确的答案,所以我只是把它放在这里让未来的搜索者看到更短的语法。
string email = db.UserProfiles
.FirstOrDefault(a => a.UserName.Contains(User.Identity.Name)).Email;
但是,在您的方案中,我会担心User1
会收到针对User11
的电子邮件。为了防止这种情况,您需要在查询中更加具体
string email = db.UserProfiles
.FirstOrDefault(a => a.UserName == User.Identity.Name).Email;