日期:2014-05-16  浏览次数:20439 次

Linq 查询的写法
有两个List
第一个为  List<classA> cliassA  有属性 aid.......
第二个为 List<classB> classB 有属性 bid,aid.....
现在需要对 List<classA>过滤 得到在List<classB>中存在aid的记录
如果把两个比做数据库的两张表,sql 就是
select  × from tableA a,tableB b
where a,aid=b.aid
这样的linq 查询怎么写?

------解决方案--------------------
from result in a
where !b.Any(b->b.aid==result.aid)
select x
------解决方案--------------------
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<ClassA> listA = new List<ClassA>()
            {
                new ClassA(){ Aid="001"},
                new ClassA(){ Aid="002"},
            };

            List<ClassB> listB = new List<ClassB>()
            {
                new ClassB(){ Bid="1" ,Aid="001"},
                new ClassB(){ Bid="2" ,Aid="002"},
                new ClassB(){ Bid="3" ,Aid="003"},
            };

            //写法1
            var result = from a in listA
                         from b in listB
                         where a.Aid == b.Aid
                         select new { b.Aid, b.Bid };

            foreach (var item in result)
            {
                Console.WriteLine("{0},{1}", item.Aid, item.Bid);
            }

            //写法2
            var result1 = listA.SelectMany(x => from p in listB where p.Aid == x.Aid select new { p.Aid, p.Bid });

    &nbs