当前位置:编程学习 > C#/ASP.NET >>

c# List 查询的问题求解

--------------------编程问答-------------------- 其实就是xml的解析,请参考我这篇博客中的一个例子。http://blog.csdn.net/chinacsharper/article/details/9246627 --------------------编程问答-------------------- http://blog.csdn.net/happy09li/article/details/7431967 --------------------编程问答-------------------- 不是xml解析,我已经反序列化成类GetProdResponse了,现在是怎么用List的筛选方法把我要的数据筛选出来。 --------------------编程问答-------------------- 重申,现在是想知道怎么写List的过滤方法,不是解析xml或者其它无关的。
用.Where .Find .FindAll 可以过滤的出来不?
因为是要查询第二级List的数据。
求高手啊。~ --------------------编程问答-------------------- 版主大哥,跟Excel没关系,别灌水哦~ --------------------编程问答--------------------

//List<HotelForGetProd> HotelList;
//List<SupplyForGetProd> SupplyList;
for(int i = 0; i < HotelList.Count; i++)
{
 HotelForGetProd hfgp = HotelList[i];
 if(hfgp.HotelID = "JD07330")
 {
   //do something
 }
}
--------------------编程问答-------------------- 你希望的返回值类型是什么?我不知道你想返回哪级节点的集合。 --------------------编程问答-------------------- 求人不如求己啊,哥自个儿搞定了,谢谢各位客串~! --------------------编程问答-------------------- GetProdRS.SupplyList
    .Where(supply => supply.HotelList.Any(hotel => hotel.HotelID == "XXX"))
    .ToList() --------------------编程问答-------------------- 是的,我刚开始也用这个Any,但是只要有一个子节点符合这个条件,他返回整个节点下的所有子字节点。
我需要的是能把这些不符合条件的字节点都自动过滤掉,只返回满足条件的节点。


--------------------编程问答-------------------- 6楼代码,遍历一遍List? --------------------编程问答-------------------- List<SupplyForGetProd> lstSupply = GetProdRS.SupplyList.Contains(t => t.SupplyID == "NZ00172").ToList();
用Contains 这个 类似模糊查询。把所有的查询出来。
http://www.dotblogs.com.tw/puma/archive/2008/03/16/1613.aspx --------------------编程问答-------------------- GetProdRS.SupplyList.First(t => t.SupplyID == "NZ00172") --------------------编程问答--------------------

List<SupplyForGetProd> lstSupplyTemp = GetProdRS.SupplyList;
lstSupply = GetProdRS.SupplyList.FindAll(t =>
                                                                {
                                                                    t.HotelList = t.HotelList.FindAll(h => h.HotelID == clsHotel.Hotel_id);
                                                                    if (t.HotelList != null && t.HotelList.Count > 0)
                                                                    {
                                                                        return true;
                                                                    }
                                                                    else
                                                                    {
                                                                        return false;
                                                                    }
                                                                }).ToList();


我写的这个方法可以实现。返回的数据,Supply节点下的HOTELS节点只包含符合条件的。
但是现在有个新的问题,就是执行一遍过后,lstSupplyTemp和GetProdRS.SupplyList不符合要求的节点都被自动删除了,导致我下一次循环不能使用GetProdRS.SupplyList这个数据了。
我查了下,原来lstSupplyTemp的复制操作并非真正的复制,其指针其实都指向同一数据,那怎么才能实现真正的复制,即改变任何一个list,另一个都不会发生改变?

或者还是刚才这个问题,怎么实现过滤?返回的Supply节点下的HOTELS节点只包含符合条件的? 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,