从Linq查询调用方法 [英] Call Method from Linq query
本文介绍了从Linq查询调用方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用LINQ查询和呼叫方法如..
oPwd = objDecryptor.DecryptIt((c.Password.ToString ())
将返回空值。
表示,这将无法正常工作。
我是如何解决这个问题。
谢谢..
在db.User
变种q =
从我们携手℃的db.EmailAccount上s.UserId等于C .UserId
在db.POPSettings
JOIN D上c.PopSettingId等于d.POPSettingsId
,其中s.UserId ==用户用户名与放大器;&安培; c.EmailId == EMAILID
选择新的
{
oUserId = s.UserId,
oUserName = s.Name,
oEmailId = c.EmailId,
oEmailAccId = c.EmailAccId,
oPwd = objDecryptor.DecryptIt(c.Password.ToString()),
oServerName = d.ServerName,
oServerAdd = d.ServerAddress,
oPOPSettingId = d.POPSettingsId,
} ;
解决方案
如果是LINQ到SQL或实体框架。你需要把它分解成步骤(因为它无法执行,在DB)。例如:
变种Q =从s在db.User
将C在db.EmailAccount上s.UserId等于c.UserId
在c.PopSettingId db.POPSettings JOIN D等于d.POPSettingsId
,其中s.UserId ==用户用户名与放大器;&安培; c.EmailId == EMAILID
选择新的
{
oUserId = s.UserId,
oUserName = s.Name,
oEmailId = c.EmailId,
oEmailAccId = c.EmailAccId,
oPwd = c.Password,
oServerName = d.ServerName,
oServerAdd = d.ServerAddress,
oPOPSettingId = d.POPSettingsId,
};
然后用 AsEnumerable()
突破组成对后端存储:
VAR QUERY2 =从行q.AsEnumerable()
选择新
{
row.oUserId,
row.oUserName,
row.oEmailId,
row.oEmailAccId,
oPwd = objDecryptor.DecryptIt(row.oPwd ),
row.oServerName,
row.oServerAdd,
row.oPOPSettingId
};
I am using Linq query and call method Like..
oPwd = objDecryptor.DecryptIt((c.Password.ToString())
it will return null value.
Means this will not working.
how I Resolve this.
Thanks..
var q =
from s in db.User
join c in db.EmailAccount on s.UserId equals c.UserId
join d in db.POPSettings
on c.PopSettingId equals d.POPSettingsId
where s.UserId == UserId && c.EmailId == EmailId
select new
{
oUserId = s.UserId,
oUserName = s.Name,
oEmailId = c.EmailId,
oEmailAccId = c.EmailAccId,
oPwd = objDecryptor.DecryptIt(c.Password.ToString()),
oServerName = d.ServerName,
oServerAdd = d.ServerAddress,
oPOPSettingId = d.POPSettingsId,
};
解决方案
If that is LINQ-to-SQL or Entity Framework. You'll need to break it into steps (as it can't execute that at the DB). For example:
var q = from s in db.User
join c in db.EmailAccount on s.UserId equals c.UserId
join d in db.POPSettings on c.PopSettingId equals d.POPSettingsId
where s.UserId == UserId && c.EmailId == EmailId
select new
{
oUserId = s.UserId,
oUserName = s.Name,
oEmailId = c.EmailId,
oEmailAccId = c.EmailAccId,
oPwd = c.Password,
oServerName = d.ServerName,
oServerAdd = d.ServerAddress,
oPOPSettingId = d.POPSettingsId,
};
then use AsEnumerable()
to break "composition" against the back-end store:
var query2 = from row in q.AsEnumerable()
select new
{
row.oUserId,
row.oUserName,
row.oEmailId,
row.oEmailAccId,
oPwd = objDecryptor.DecryptIt(row.oPwd),
row.oServerName,
row.oServerAdd,
row.oPOPSettingId
};
这篇关于从Linq查询调用方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文