LINQ为每次迭代传递值

时间:2012-02-01 15:27:03

标签: linq

我有一个列表(主列表),其中包含以下内容

PsID Nominprsn


1詹姆斯 2特洛伊 3弗雷德

有一个存储过程,我传入了PSID和Nominprsn的值并返回结果。

    var spresult = sp_getval(PSID, Nominprsn);

我不确定如何浏览列表,并且每个列表都会将值传递给该给定记录的存储过程。

输出为

PsID Nominprsn spresult


1詹姆斯3 2特洛伊4 3 Fred 2

我知道我可以做类似

的事情
    var listv = (from ml in mainlist
                 select ml).ToList();

但不确定如何在每次迭代时调用sp_getval,因为我需要传递 PsID和Nominprsn的值并将其传递给sp_getval。

1 个答案:

答案 0 :(得分:1)

我不是100%肯定你在问什么 - 但是如果我关注,你说你想要将列表中的每个条目映射到列表中为该项目调用你的sproc的结果?< / p>

如果是这种情况,你可以这样做:

var results = mainList.Select(item => sp_getval(item.PSID, item.Nominprsn))

编辑:我只是重新阅读您的问题,看看您想要的输出,在这种情况下,我会这样做:

var results = mainList.Select(item => new { 
                                            spResult: sp_getval(item.PSID, item.Nominprsn),
                                            PSID: item.PSID,
                                            Nominprsn: item.Nominprsn
                                           });

这会将列表中的每个条目映射到一个包含三个成员的新匿名类型:列表对象中的原始两个字段,以及包含SP调用结果的新spResult字段。