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