小编Oka*_*min的帖子

如何在 LINQ where 子句中传递 func 表达式?

这是我要传入 where 子句的自定义过滤器(Func)

Func<Project,bool> filter = f =>
{
    bool filteredContent = true;
    if (!CreatorId.Equals(0))
        filteredContent = f.CreatedBy.Equals(CreatorId);

    if (filteredContent && !VerticalMarketId.Equals(0))
        filteredContent = f.VerticalMarketsId.Equals(VerticalMarketId);

    if (filteredContent && !ProductCategoryId.Equals(0))
        filteredContent = f.ProductCategoriesId.Equals(ProductCategoryId);

    return filteredContent;

};
Run Code Online (Sandbox Code Playgroud)

这是我的代码,我根据过滤器表达式中创建的条件获取所有项目

 getProjects = await _context.Projects.Where(x => x.IsDeleted == false && filter.Invoke(x))// Here I'm getting the exception
                .Include(PC => PC.ProjectComments.Where(x => x.IsDeleted == false))
                .Include(SP => SP.SharedProjects)
                .AsNoTracking().ToListAsync();
Run Code Online (Sandbox Code Playgroud)

异常:无法翻译 LINQ 表达式(DbSet......)。以可翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端计算。

有人可以告诉我如何使用其中的表达式过滤数据吗?

注意:我可以在应用过滤器之前执行 ToListAsync() ,但它会从数据库获取所有记录,然后在客户端进行过滤。但我想在服务器端过滤数据。

c# linq iqueryable where-clause entity-framework-core

5
推荐指数
1
解决办法
4755
查看次数

如何将 Dropzone.js 与 ASP.NET Core MVC 集成?

我想使用 IFormFile 上传数据库中的一些文档。在客户端,我使用 Dropzone.js 但它无法正常工作。每当我点击“提交”按钮时,它都会在参数中发送一个空值。我有两个疑问。1. 如何将文档(图像/PDF)发送到操作方法。2. 如何重新设计(改变风格)Dropzone。(如果有人解释 dropzone 的流程那么它将非常有用)

这是我的 HTML 代码

<form asp-action="AddDocument" asp-controller="Transactions" method="post" enctype="multipart/form-data" class="dropzone dz-clickable form-horizontal form-bordered" id="dropzoneForm">
    <div class="form-group form-actions">
        <div class="col-md-9 col-md-offset-4">
            <button type="submit" class="btn btn-sm btn-primary"><i class="fa fa-floppy-o"></i> Upload</button>
        </div>
    </div>
</form> 
Run Code Online (Sandbox Code Playgroud)

JS代码:

$(function () {
            Dropzone.options.dropzoneForm = {
                paramName: "DocumentPhotos", // The name that will be used to transfer the file
                autoProcessQueue: false,
                uploadMultiple: true,
                parallelUploads: 100,
                accept: function (file, done) {
                    done();
                }
            };
        });
Run Code Online (Sandbox Code Playgroud)

这是我的服务器端语言代码:

        [HttpPost]
        public async Task<IActionResult> AddDocument(IEnumerable<IFormFile> …
Run Code Online (Sandbox Code Playgroud)

html javascript asp.net-core-mvc iformfile dropzone

2
推荐指数
1
解决办法
9403
查看次数