【问题标题】:Using Linq to get unique entries [closed]使用 Linq 获取唯一条目 [关闭]
【发布时间】:2014-02-03 22:10:15
【问题描述】:

我有一个需要读取文本文件的 linq 语句。它需要一系列 url 并将它们剥离回来以获取域。然后我想获取唯一域并将它们写回文件。

这是我目前所拥有的:

        var urls = File.ReadAllLines(badLinks)
            .Where(x => x.IsNotNullOrEmpty())
                .Select(x => ManipulateUrl(x))
                .Distinct()
                .ToList();

问题是,当我在更改后真正重新评估列表并创建唯一实体(域)。

任何帮助表示赞赏。

* 更新 *

抱歉,在分解列表后发现源文件有问题。有 10 万条记录很难看到。

【问题讨论】:

  • ManipulateUrlstring 返回什么?
  • 如果 url 以 'mydomain.com/aff=123' 开头,则返回的字符串将为 'mydomain'
  • 您能重新解释一下这个问题吗?我不明白出了什么问题。
  • 你的列表的输出项由Select决定。假设您想保留原始项目但基于选择器过滤它们,这是 this question 的副本。

标签: c# asp.net linq


【解决方案1】:

您的代码确实看起来是正确的,唯一想到的是 ManipulateURL 是否将其丢弃。

您是否尝试过将代码分成两个单独的语句,即:

var urls = File.ReadAllLines(badLinks)
            .Where(x => x.IsNotNullOrEmpty())
            .Select(x => ManipulateUrl(x));

var distinctURLS = urls.Distinct().ToList();

至少通过这种方式,您可以单步执行代码并验证 urls 是否按照您的预期填充。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2017-08-11
    相关资源
    最近更新 更多