Re: [問題] 有沒有辦法在linq查詢語句裡做一些事情

作者: fo40225   2015-10-28 00:50:31
※ 引述《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();
如果要做的事情太複雜 建議還是額外寫比較好懂
作者: frank6780 ( 努力賺錢 )   2015-10-29 03:07:00

Links booklink

Contact Us: admin [ a t ] ucptt.com