使用 SELECT 和 WHERE 获取项目

Get item using SELECT and WHERE

我有一个对象 class TFNDailySummaryReport。现在我正在尝试根据 AffiliateID 检索 AnsweredCalls 的值。但我越来越 一个 IEnumerable 类型而不是字符串。

public class TFNDailySummaryReport
{
    public string AffiliateID { get; set; }
    public string AnsweredCalls { get; set; }
}

这是我正在尝试的:

List<TFNDailySummaryReport> DealerTFNTable = dealerData;
string answeredCalls = DealerTFNTable.Where(d => d.AffiliateID == "1").Select(x => x.AnsweredCalls).ToString();
List<TFNDailySummaryReport> DealerTFNTable = dealerData;
string answeredCalls = DealerTFNTable.Where(d => d.AffiliateID == "1").FirstOrDefault().AnsweredCalls;

注意: 确保检查空值,因为如果找不到匹配项

,FirstOrDefault() 将 return 空值

您应该 select 一个 TFNDailySummaryReport - 因为 table 理论上可能包含多个 - AffiliateID 为“1”:

List<TFNDailySummaryReport> DealerTFNTable = dealerData;
TFNDailySummaryReport theReport = DealerTFNTable.FirstOrDefault(d => d.AffiliateID == "1");

...然后访问此特定 TFNDailySummaryReport 的 AnsweredCalls 属性:

if(theReport != null)
    string answeredCalls = theReport.AnsweredCalls;

这里的 DealerTFNTable 是 List 的意思——DealerTFNTable 是一个列表,可以容纳 TFNDailySummaryReport 类型的对象。

您的第一个 where 子句将 return 那些 AffiliateID 为“1”的对象作为 Where(predicate) 扩展方法始终 returns IEnumerable.

现在您正在从每个对象中选择 AnsweredCalls(return通过 where 扩展方法编辑)。因此,它再次进入 return 个 IEnumerable 字符串。换句话说,你有多个字符串对象。

现在您正试图将这些字符串转换成永远不会给您想要的结果的字符串。 如果您确定在 where 条件下只会获得一个值,那么最好使用 FirstOrDefault() 扩展方法。

试试这个:

List<TFNDailySummaryReport> DealerTFNTable = dealerData;
string answeredCalls = DealerTFNTable.Where(d => d.AffiliateID == "1").Select(x => x.AnsweredCalls).FirstOrDefault();