使用SELECT和WHERE获取项目

时间:2016-12-26 18:02:28

标签: c# linq select where

我有一个类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();

3 个答案:

答案 0 :(得分:0)

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

注意: 确保检查null,因为如果找不到匹配项,FirstOrDefault()将返回null

答案 1 :(得分:0)

这里DealerTFNTable是List表示 - DealerTFNTable是一个可以保存TFNDailySummaryReport类型对象的列表。

你的第一个where子句将返回AffiliateID为&#34; 1&#34;由于Where(predicate)扩展方法始终返回IEnumerable

现在您从每个对象中选择AnsweredCalls(由extension方法返回)。所以,它将再次返回IEnumerable字符串。换句话说,你有多个字符串对象。

现在您正在尝试将这些字符串转换为字符串,这将永远不会为您提供您想要查看的结果。 如果您确定只在条件中获得一个值,那么使用FirstOrDefault()扩展方法会更好。

试试这个:

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

答案 2 :(得分:-1)

您应该选择单个 TFNDailySummaryReport - 因为该表理论上可能包含多个 - AffiliateID为&#34; 1&#34;:

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

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

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