首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于Lambda,该怎么解决

2013-02-24 
关于Lambda2个Lambda怎么合并?比如query data.Where(x x.ID 1)query query.Where(x x.Name

关于Lambda
2个Lambda怎么合并?
比如
query = data.Where(x => x.ID == 1);
query = query.Where(x => x.Name == "aaa");
[解决办法]
query = data.Where(x => x.ID == 1&&x.Name == "aaa");
[解决办法]
说清楚你的意思
如果是合并条件
var query = data.Where(x => x.ID == 1&&x.Name == "aaa");

如果是合并两个结果集,求并集嘛??
如下
var query1 = data.Where(x => x.ID == 1);
var query2 = query.Where(x => x.Name == "aaa");
var query = query1.Union(query2);//query1 query2 结构一样
[解决办法]

class A
{
    public int ID { get; set; }
    public string Name { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        var data = Enumerable.Repeat(0, 6).Select((x, i) => new A { ID = i / 2, Name = ((char)(i / 2 + 65)).ToString() });
        Expression<Func<A, bool>> query1 = x => x.ID == 1;
        Expression<Func<A, bool>> query2 = x => x.Name == "A";
        var query = data.Where(Expression.Lambda(Expression.AndAlso((query1 as LambdaExpression).Body, (query2 as LambdaExpression).Body), (query1 as LambdaExpression).Parameters).Compile() as Func<A, bool>);
        foreach (var item in query)
            Console.WriteLine("{0} {1}", item.ID, item.Name);
    }
}

热点排行