linq exression返回值

时间:2018-01-22 15:38:44

标签: c# linq

所以我尝试使用linq表达式来获取与这些记录相关的作业单相关联的某些属性。我实际上在访问这些值时遇到了问题。

var accountManagerObject = (
    from j in api.hc_joborderSet
    where j.statecode == hc_joborderState.Active &&
        j.hc_systemuser_hc_joborder_AccountManager != null &&
        j.hc_ExpirationDate <= dateFilter
    select new { accountmangerid = j.hc_AccountManager.Id, jobid = j.Id, jobName = j.LogicalName })
    .ToLookup(o=>o.accountmangerid);

foreach (var jobId in accountManagerObject.ToList())
{
    Console.WriteLine(jobId.Select(o=>o.jobName));
}

而不是返回值,我的写作线正在返回

  

System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType0 3的System.Guid,的System.Guid,System.String],System.String]   System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType0 3的System.Guid,的System.Guid,System.String],System.String]   System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType0 3的System.Guid,的System.Guid,System.String],System.String]   System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType0 3的System.Guid,的System.Guid,System.String],System.String]   System.Linq.Enumerable + WhereSelectEnumerableIterator 2[<>f__AnonymousType0 3的System.Guid,的System.Guid,System.String],System.String]

1 个答案:

答案 0 :(得分:2)

您的Select()会返回IEnumerable<string>。此实例的ToString()方法仅为您提供类型名称。

您可能想要显示jobName s的序列。例如,这可以这样做:

foreach (var jobId in accountManagerObject)
{
    foreach(string jobName in jobId.Select(o=>o.jobName))
        Console.WriteLine(jobName);
}

或更短时间使用string.Join

foreach (var jobId in accountManagerObject)
{
    Console.WriteLine(string.Join(Environment.NewLine, jobId.Select(o=>o.jobName)));    
}

请注意,您.ToList()中的foreach电话是不必要的,应该省略。无需从此LookUp创建新列表,只需迭代即可。