从Linq查询调用方法 [英] Call Method from Linq query

查看:118
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆