c# - 在 LINQ select(x => new

标签 c# linq

我正在将 POCO 映射到模型中,代码如下所示。

// NOT NEEDED var noneRequiredUserDocuments = new List<NoneRequiredUserDocument>();
//var docs = studentDocuments.Where(x => x.RequiredUserDocumentId == null); // NOT NEEDED .ToList();
//var noneRequiredUserDocuments = docs.Select(x => new NoneRequiredUserDocument

// You can chain LINQ methods (i.e. Where and Select)
var noneRequiredUserDocuments = studentDocuments
    .Where(x => x.RequiredUserDocumentId == null)
    .Select(x => new NoneRequiredUserDocument
    {
        StudentDocument = x,
        Src = _storageService.GetFileUrl(x.FileName),
        ThumbnailImageUrl = ImageHelper.ThumbnailImageUrl(Src, 75)

    }).ToList();

我的问题是在这一行:

ThumbnailImageUrl = ImageHelper.ThumbnailImageUrl(Src, 75)

Src 在上下文中不存在。

有没有办法让我在 select 中声明一个我可以在 LINQ select 中重用的变量?

而且我不想调用 _storageService.GetFileUrl 两次。

最佳答案

您可以像这样在 Select 中声明一个变量:-

noneRequiredUserDocuments = docs.Select(x => 
  {
      var src= _storageService.GetFileUrl(x.FileName);
      return new NoneRequiredUserDocument
     {
        StudentDocument = x,
        Src = src,
        ThumbnailImageUrl = ImageHelper.ThumbnailImageUrl(src, 75);
     };
  }).ToList();

查询语法中这样做等同于:-

from x in docs
let src= _storageService.GetFileUrl(x.FileName)
select and so on..

关于c# - 在 LINQ select(x => new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251075/

相关文章:

c# - 在 C# 中有条件地隐藏 asmx Web 方法

c# - 巢-IndexMany不索引我的对象

c# - 在 WPF 中单击按钮时创建文本框?

c# - 如何在 C# 中捕获 Windows 应用商店应用程序的窗口内容

c# - 从关联的属性值中获取 xml 属性值

c# - 使用 LINQ 进行“智能”分组

c# - 在特定条目之后选择有序列表中的项目

具有 where 条件的 C# LINQ GroupBy

c# - Moq中的设置方法,调用不明确

c# - 如何使用 Linq 在字符串中搜索列表的任何项目