如何使用一致的语法重写此LINQ表达式?

托运人

这个单语句查询整洁地说:“给我一个裸文件名列表,该文件的原始文件名是包含特定文件结构的ZIP存储库。”

但是我同时使用.Where()扩展方法(流利的语法)和选择查询,因为我尝试的其他任何操作均无法编译。如果我将“ .Where(file ==> <statement>)”更改为“ where <statement>”,则会收到错误消息,即匿名方法代码不返回布尔值,并且如果更改了“ select <clause>”到“ .Select(<clause>)”,错误是“未使用选择子句”。

我对查询或流利的语法感到满意,但我想选择其中一种。谁能解释为什么这行不通,以及我需要做什么才能确定一种一致的语法?

return (from file in Directory.EnumerateFiles(
                    Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Globals.CompanyName, ProjectName, FolderName),
                    imageExtension,
                    SearchOption.TopDirectoryOnly)
    .Where(file =>
    {
        try
        {
            string relativePath = ClassFru.Station + "/";   // Inside ZIPs, paths use a single forward slash
            var zip = new ZipFile();
            zip.ZipError += (s, o) => { throw new Exception(); };
            using (zip = ZipFile.Read(file))
            {
                /// <todo>if (zip.Comment != Globals.CompanyName) { return false; }</todo>
                foreach (var fru in this.gFrus)
                {
                    var fruPath = relativePath + fru.Id + '.';
                    if (!(from e in zip where !e.IsDirectory && e.FileName.StartsWith(fruPath) select true).Any()) { return false; }
                }
                return true;
            }
        }
        catch (Exception)
        {
            return false;
        }
    })
    select Path.GetFileNameWithoutExtension(file)).ToArray();
马坦·沙哈(Matan Shahar)

由于我没有在此表达式中使用的所有类型,因此很难对其进行编译,但是我认为我应该像这样工作:

            return (Directory.EnumerateFiles(
            Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
                Globals.CompanyName, ProjectName, FolderName),
            imageExtension,
            SearchOption.TopDirectoryOnly)
            .Where(file => {
                try
                {
                    string relativePath = ClassFru.Station + "/"; // Inside ZIPs, paths use a single forward slash
                    var zip = new ZipFile();
                    zip.ZipError += (s, o) => {
                        throw new Exception();
                    };
                    using (zip = ZipFile.Read(file))
                    {
                        /// <todo>if (zip.Comment != Globals.CompanyName) { return false; }</todo>
                        foreach (var fru in this.gFrus)
                        {
                            var fruPath = relativePath + fru.Id + '.';
                            if(zip.Any(e=> !e.IsDirectory && e.FileName.StartsWith(fruPath))
                                    .Any())
                            {
                                return false;
                            }
                        }
                        return true;
                    }
                } catch (Exception)
                {
                    return false;
                }
            }).Select(Path.GetFileNameWithoutExtension).ToArray());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何重写此foreach使其成为以前的Linq表达式的一部分?

来自分类Dev

如何使用LinQ lambda表达式编写此查询

来自分类Dev

如何转换此linq表达式?

来自分类Dev

如何优化此表达式?LINQ?

来自分类Dev

(wx)Maxima:如何使用`args`获得一致的表达式?

来自分类Dev

(wx)Maxima:如何使用`args`获得一致的表达式?

来自分类Dev

如何使用视图模式语法编写此case表达式?

来自分类Dev

正确的语法此lambda表达式

来自分类Dev

使用循环转换此linq表达式

来自分类Dev

使用循环转换此linq表达式

来自分类Dev

如何编写此正则表达式以与 preg_match 一起使用?

来自分类Dev

了解如何使用EL和JSP表达式检索不存在的属性。与负责人不一致

来自分类Dev

如何使用pyparsing验证布尔表达式语法?

来自分类Dev

使用 let 重写表达式

来自分类Dev

如何使用此正则表达式更具体?

来自分类Dev

如何使用表达式树编写此嵌套查询?

来自分类Dev

如何使用正则表达式更改此值?

来自分类Dev

如何使用正则表达式匹配此模式

来自分类Dev

LINQ表达式无法翻译。以一种可以翻译的形式重写查询

来自分类Dev

正则表达式捕获的组与正则表达式的成功不一致

来自分类Dev

使用System.Linq.Expressions API重写Lambda表达式

来自分类Dev

如何修复查询表达式中的此语法错误?

来自分类Dev

pypeg2-可以使用衣夹语法分析此表达式吗?

来自分类Dev

如何使用IEnumerable的Contains方法构建LINQ表达式?

来自分类Dev

如何在linq lambda表达式中使用ToShortDateString?

来自分类Dev

如何使用 Linq 创建多属性 lambda 表达式

来自分类Dev

如何使用多个参数制作linq表达式

来自分类Dev

如何修复此lambda表达式?

来自分类Dev

如何评估此表达式

Related 相关文章

  1. 1

    我如何重写此foreach使其成为以前的Linq表达式的一部分?

  2. 2

    如何使用LinQ lambda表达式编写此查询

  3. 3

    如何转换此linq表达式?

  4. 4

    如何优化此表达式?LINQ?

  5. 5

    (wx)Maxima:如何使用`args`获得一致的表达式?

  6. 6

    (wx)Maxima:如何使用`args`获得一致的表达式?

  7. 7

    如何使用视图模式语法编写此case表达式?

  8. 8

    正确的语法此lambda表达式

  9. 9

    使用循环转换此linq表达式

  10. 10

    使用循环转换此linq表达式

  11. 11

    如何编写此正则表达式以与 preg_match 一起使用?

  12. 12

    了解如何使用EL和JSP表达式检索不存在的属性。与负责人不一致

  13. 13

    如何使用pyparsing验证布尔表达式语法?

  14. 14

    使用 let 重写表达式

  15. 15

    如何使用此正则表达式更具体?

  16. 16

    如何使用表达式树编写此嵌套查询?

  17. 17

    如何使用正则表达式更改此值?

  18. 18

    如何使用正则表达式匹配此模式

  19. 19

    LINQ表达式无法翻译。以一种可以翻译的形式重写查询

  20. 20

    正则表达式捕获的组与正则表达式的成功不一致

  21. 21

    使用System.Linq.Expressions API重写Lambda表达式

  22. 22

    如何修复查询表达式中的此语法错误?

  23. 23

    pypeg2-可以使用衣夹语法分析此表达式吗?

  24. 24

    如何使用IEnumerable的Contains方法构建LINQ表达式?

  25. 25

    如何在linq lambda表达式中使用ToShortDateString?

  26. 26

    如何使用 Linq 创建多属性 lambda 表达式

  27. 27

    如何使用多个参数制作linq表达式

  28. 28

    如何修复此lambda表达式?

  29. 29

    如何评估此表达式

热门标签

归档