2012-02-01 97 views
1

我有一個列表(mainlist)具有以下LINQ傳遞值對於每次迭代

PSID Nominprsn


1詹姆斯 2特洛伊 3佛瑞德

有一個存儲過程在那裏我傳入PSID和Nominprsn的值並返回結果。

var spresult = sp_getval(PSID, Nominprsn); 

我不知道如何通過列表,併爲每個列表傳遞值存儲到該給定記錄的proc值。

輸出將

PSID Nominprsn spresult


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

我知道我可以這樣做

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

但不知道如何撥打電話sp_getval爲每次迭代,因爲我需要通過 PsID和Nominprsn的值並將其傳遞給sp_getval。

回答

1

我不是100%肯定你問什麼 - 但如果我跟着,你說,你想在你的列表中調用存儲過程你在你的列表項的結果,每個條目映射?

如果這是你可以做這樣的事情的情況下:

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字段。

+0

- 我還有一個問題 - spResult是一個列表,並從該列表中,我需要獲得第二行。此外,我需要獲得名爲PSDate的列。 PS的值是spResult。關於如何做到這一點的任何想法 – 2012-02-01 15:52:06

+0

您可以在sp_getval(args)調用中嵌套更多的LINQ,但這會很快變得麻煩 - 根據究竟發生了什麼,我可能會更改sproc(或創建一個新的)返回你需要的東西,或者將sproc調用包裝在另一個函數中,該函數從結果中提取你需要的東西,然後在上面的LINQ中調用新創建的函數,將「item」傳遞給它(所以spResult:myNewFunc(item) ,其中myNewFunc帶一個列表項,調用存儲過程,並對需要的結果進行任何操作) – acoffman 2012-02-01 15:57:00