Re: [問題] 有沒有辦法在linq查詢語句裡做一些事情
※ 引述《bantime (景)》之銘言:
: 想請問有沒有其他方式可以讓我在查詢語句中處理一些事情呢?
這裡我假設你是用LINQ to Objects
不是其他的 LINQ to SQL 或 LINQ to XML 或 LINQ to entities
如果真的很不想另外寫委派 可以使用類似JavaScript IIFE的寫法
範例如下
internal class Program
{
private static void Main(string[] args)
{
((Action)(() =>
{
Console.WriteLine("IIFE");
}))();
string outer = "outside";
((Action<string>)(inner =>
{
Console.WriteLine(inner);
}))(outer);
int one = ((Func<int>)(() =>
{
return 1;
}))();
int o = 5;
int square = ((Func<int, int>)(i =>
{
return i * i;
}))(o);
}
}
要注意的是
如果要在lambda方法本體內直接存取外面的變數
最好搞懂閉包(closure)的觀念
(一句話解釋 你使用到的變數等於從外面用ref傳入lambda中 不了解的情況下不要使用)
所以你的LINQ查詢變成
var q =
from tar in aPlayerData.m_QuestDatas.Values
let questXml = _QUEST_.GetData(tar.uXID)
from data in RefreshQuestDatas
where questXml.AccomplishType == data.m_eUpdateType
select ((Func<rType, dataType, rType>)((a, b) =>
{
a.nTarNum1 += b.m_nUpdateNum;
return a;
}))(r, data);
q.ToList();
如果要做的事情太複雜 建議還是額外寫比較好懂
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.203.135
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1445964635.A.14B.html
推
10/29 03:07, , 1F
10/29 03:07, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章