Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过linq从SQL BD表中的列获取实际值_C#_Sql_Linq - Fatal编程技术网

C# 通过linq从SQL BD表中的列获取实际值

C# 通过linq从SQL BD表中的列获取实际值,c#,sql,linq,C#,Sql,Linq,我需要能够从TESTDB中的Client表中检索名为ClientEmail的列中存储的值。然后我需要能够使用此值发送电子邮件,例如: 以下Linq查询检索我需要的详细信息: var clientEmail = (from c in DB.Clients where c.ClientID == Convert.ToInt32(Session[Constants.SessionKeys.ClientID])

我需要能够从
TEST
DB中的
Client
表中检索名为
ClientEmail
的列中存储的值。然后我需要能够使用此值发送电子邮件,例如:

以下Linq查询检索我需要的详细信息:

            var clientEmail = (from c in DB.Clients
                                   where c.ClientID == Convert.ToInt32(Session[Constants.SessionKeys.ClientID])
                                   select new { c.ClientEmail }
                              ).FirstOrDefault();

            string clientMailBox = clientEmail.ToString();
现在我想使用
clientMailBox
string变量中的值存储来发送电子邮件

但是,查询结果以以下格式返回列的名称及其值:

{ ClientEmail = test.dep.team"@testemail.co.uk }
该列的实际值为:

test.dep.team"@testemail.co.uk
我希望得到高于此值的值,而不是:

{ ClientEmail = test.dep.team"@testemail.co.uk }
我的问题中有什么遗漏吗

如果您有任何建议,我将不胜感激。

不要在您的匿名对象上使用ToString(),而是使用您需要的属性

 string clientMailBox = clientEmail.ClientEmail;
在投影中,如果未指定属性名称,则将采用选定属性的名称

FirstOrDefault
返回一个匿名对象,该对象具有
ClientEmail
字符串属性,而不是字符串

另一种方法(我认为在本例中更好)是只选择string属性

var clientEmail = (from c in DB.Clients
                   where c.ClientID == Convert.ToInt32(Session[Constants.SessionKeys.ClientID])
                   select c.ClientEmail)
                   .FirstOrDefault();
然后,
clientEmail
将是一个字符串(可能为空)

编辑

一旦清楚了这一点,您可以使用Konstantin Ershov的较短语法(假设空条件运算符至少为.net 4.6)

不要在匿名对象上使用ToString(),而是使用您需要的属性

 string clientMailBox = clientEmail.ClientEmail;
在投影中,如果未指定属性名称,则将采用选定属性的名称

FirstOrDefault
返回一个匿名对象,该对象具有
ClientEmail
字符串属性,而不是字符串

另一种方法(我认为在本例中更好)是只选择string属性

var clientEmail = (from c in DB.Clients
                   where c.ClientID == Convert.ToInt32(Session[Constants.SessionKeys.ClientID])
                   select c.ClientEmail)
                   .FirstOrDefault();
然后,
clientEmail
将是一个字符串(可能为空)

编辑

一旦清楚了这一点,您可以使用Konstantin Ershov的较短语法(假设空条件运算符至少为.net 4.6)

保持简单

string clientEmail = DB.Clients.FirstOrDefault(c => c.ClientID == Convert.ToInt32(Session[Constants.SessionKeys.ClientID]))?.ClientEmail;
保持简单

string clientEmail = DB.Clients.FirstOrDefault(c => c.ClientID == Convert.ToInt32(Session[Constants.SessionKeys.ClientID]))?.ClientEmail;

谢谢拉斐尔(如果我没拼出你的名字,我会很高兴的),但这就成功了。我将考虑使用康斯坦丁汉克斯·拉斐尔(Konstantintanks Raphael,如果我没有拼写你的名字的话,那就是soory)建议的较短语法,但这确实奏效了。我将介绍如何使用KonstantinHanks Konstantin建议的较短语法较短的语法使其看起来更简单Hanks Konstantin较短的语法使其看起来更简单