gpt4 book ai didi

c# - 如何获取 List 字段的值(加上转换)?

转载 作者:行者123 更新时间:2023-11-30 15:16:28 27 4
gpt4 key购买 nike

我有这个代码。最后我们有 List具有字段的匿名对象 FILE_NAME , DATE , REPORT_LINK .

public ServiceResult Get(string userIdString)
{
var userId = Int32.Parse(userIdString);
var downloadLink = _serviceConfigManager.Parameters[ServiceResources.DownloadService].FirstOrDefault();
var query = SharedUnitOfWork.Context.ReportRequest
.Where(item => item.IS_DELETED == 0
&& item.TENANT_ID == TenantId
&& item.REPORT_STATE_ID == 2
&& item.CREATED_BY_USER_ID == userId)
.OrderByDescending(item => item.ID)
.Take(10)
.ToList()
.Select(item => new
{
FILE_NAME = item.FILENAME,
DATE = item.CREATION_DATE,
REPORT_LINK = string.Format("{0}/{1}", downloadLink, item.ID)
}
);
return new ServiceResult<object>(query.ToList());
}

首先,如您所见,我们返回 ServiceResult<object>目的。第二,函数的返回类型是ServiceResult (不是通用的)。这段代码不是我写的,所以我无法更改此方法的源代码。

任务:在我的单元测试中,我需要返回对象并检查它是否填充了正确的数据。我按照函数 Get 的方式编写测试返回 2 条记录。所以,我需要检查这个记录中的每个字段。如何做到这一点?

在我的测试中,我从 serviceResult 的这个函数变量中得到姓名。如何“展开”serviceResult所以它看起来像 List<of_something>我可以检查 List<of_something>[0].FILE_NAME , List<of_something>[1].FILE_NAME等等?

serviceResultResult等于 query.ToList() 的字段.

致版主:我阅读了所有提供的类似主题,但没有一个描述|解决了我的任务,因为我无法重写 Get 函数的源代码。

最佳答案

你无法掌握匿名类型。您的选择是:

  • 使用反射(GetType().GetProperty() 等)读取数据
  • 使用动态

后者可能更方便:

foreach(dynamic obj in listOfAnonObjects) {
string filename = obj.FILE_NAME;
DateTime date = obj.DATE;
string link = obj.REPORT_LINK;

// TODO: now use filename, date and link
}

您可以使用上面的方法将数据投影到您自己的列表类型中,该列表类型具有广为宣传的属性。

关于c# - 如何获取 List<of anonymous type> 字段的值(加上转换)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49386306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com