【发布时间】:2019-07-20 21:37:21
【问题描述】:
我在使用 lambda 表达式返回字符串列表时得到以下字符串:
System.Linq.Enumerable+WhereSelectEnumerableIterator`2[HOrg.ServiceCatalog.Contracts.Models.IOfferProperty,System.String]
我的代码是:
IList<string> offerIds = new List<string>();
foreach (var offer in offerProperties)
{
offerIds.Add(offer
.Where(x => x.PropertyDefinitionId == propertyDefinitionId)
.Select(x => x.OfferId)
.ToString());
}
在 foreach 循环中,offer 变量包含预期值。但是当我使用 lambda 表达式创建条件时,它会返回 System.Linq.Enumerable+WhereSelectEnumerableIterator`2 作为结果。
当我搜索这个时,我得到了一些建议,例如,
- 将 lambda 表达式的结果复制到单独的列表中
- 将
ToList()用于 lambda 表达式,然后将其分配给结果变量
还有更多建议。但是没有答案对我有帮助。
有人知道这段代码有什么问题吗?
【问题讨论】:
-
Join序列的所有项:string.Join("; ", offer.Where. ... .Select(x => x.OfferId)) -
你应该意识到这是在一个没有覆盖来自
Object的类型上调用ToString的默认结果。这意味着它几乎肯定不意味着在调试场景之外调用ToString()..
标签: c# .net linq lambda collections