http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3382|回复: 3

[其他] List查找问题

[复制链接]
发表于 2013-4-16 16:20:04 | 显示全部楼层 |阅读模式
我写了一个UrlClass类,类中有Id、Name、Url、Type这几个属性,我用到List,我想要的功能是:将一个URL与List里的记录中的Url进行比较,其他的Id、Name、Type这几个属性不比较,如果Url在List中不存在,则将其添加到List中。就像哈希表一样用ContainsKey来判断键是否存在一样,List的Contains只能用于判断Id、Name、Url、Type这几个属性值都相同的情况下才会为true,但是我只想比较其中的Url值就行了。
UrlClass类代码如下:[code=csharp]public class UrlClass
    {
        public UrlClass(string TextStr = "" , string UrlStr = "", string TypeStr = "未采集")
        {
            _Text = TextStr; _Url = UrlStr; _Type = TypeStr;
        }

        private string _Id = new RandClass(15).randStr + new RandClass(5, "2").randStr + new RandClass(7, "3").randStr;
        /// <summary>
        /// 链接ID
        /// </summary>
        public string Id
        {
            get { return _Id; }
            set { _Id = value; }
        }

        private string _Text = "";
        /// <summary>
        /// 链接锚文本
        /// </summary>
        public string Text
        {
            get { return _Text; }
            set { _Text = value; }
        }

        private string _Url = "";
        /// <summary>
        /// 链接地址
        /// </summary>
        public string Url
        {
            get { return _Url; }
            set { _Url = value; }
        }

        private string _Type = "";
        /// <summary>
        /// 链接状态
        /// </summary>
        public string Type
        {
            get { return _Type; }
            set { _Type = value; }
        }
    }[/code]


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-4-16 16:36:02 | 显示全部楼层
本帖最后由 kidsoft 于 2013-4-16 16:37 编辑

你的urlClass集合,假定名称为urlClasses.
要比较的新类为:newUrlClass
if(urlClasses != null && urlClasses.Any() && !urlClasses.Any(p=>p.url == newUrlClass.url))
{
     urlClasses.add(newUrlClass);
}
 楼主| 发表于 2013-4-23 15:46:14 | 显示全部楼层
呀呀,还有这样的方法呀,不错嘛
发表于 2013-4-25 20:40:37 | 显示全部楼层
上面的方法写的不够周到,有一种情况没有考虑到。刚突然想起来。如果是刚实例化的类,则出问题了。正确写法应该是:
if(urlClasses != null)
{
    if(!urlClasses.Any())
    {
         urlClasses.Add(newUrlClass);
    }
    else
    {
         if(!urlClasses.Any(p=>p.Url == newUrlClass.Url))
          {
              urlClasses.Add(newUrlClass);
          }
    }
}
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 15:44

© 2014-2021

快速回复 返回顶部 返回列表