【问题标题】:LINQ: How to convert query results during select?LINQ:如何在选择期间转换查询结果?
【发布时间】:2011-06-03 16:24:17
【问题描述】:

这会返回strings的列表:

var filesizes = from fd in files
                from tag in fd.Tags
                where tag.Id == ID.FILESIZE
                select tag.Value;

以下方法不起作用,但是否有办法在查询期间执行类似的操作,将string 转换为int

var filesizes = from fd in files
                from tag in fd.Tags
                where tag.Id == ID.FILESIZE
                select new { int.Parse(tag.Value) };

或者我应该只使用ConvertAll as suggested here

【问题讨论】:

  • 如果你放弃new {会起作用吗?

标签: c# linq .net-3.5 type-conversion


【解决方案1】:

你可以这样做:

var filesizes = from fd in files
                from tag in fd.Tags
                where tag.Id == ID.FILESIZE
                select new { FileSize = int.Parse(tag.Value) };

var filesizes = from fd in files
                from tag in fd.Tags
                where tag.Id == ID.FILESIZE
                select int.Parse(tag.Value);

【讨论】:

  • 选择展示多种可能性。我相信第一个变体也会很快派上用场!
【解决方案2】:

你可以把select int.Parse(tag)放在最后而不是select tag.Value

var filesizes = from fd in files
                from tag in fd.Tags
                where tag.Id == ID.FILESIZE
                select int.Parse(tag.Value);

【讨论】:

    【解决方案3】:

    为什么需要用 new { ... } 包装整数?很简单:

    var filesizes = from fd in files
                    from tag in fd.Tags
                    where tag.Id == ID.FILESIZE
                    select int.Parse(tag.Value);
    

    【讨论】:

    • 我(还没有)。当时我只是没有想到要尝试不这样做。
    猜你喜欢
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多