需要帮助从列表中提取某些数据

时间:2017-04-18 14:16:07

标签: c# wpf

我有一个呼叫中心应用程序,它将一系列其他数据中的呼叫显示给我们的分析师和经理。我试图在队列中显示接下来的三个人来接听电话。我能够将下面的代码放在一起,并将max3作为项目源引用到列表框中,但它实际上并没有显示下一个人的姓名。当你在max3上添加一个断点时,它会显示下一个三个代理,但它也会显示所有数据,队列中的时间,分机号码等等。我需要知道如何只显示他们的名字。

List<NewAgent> newAgentList = new List<NewAgent>();
List<Tuple<String, TimeSpan>> availInItems = new List<Tuple<string, TimeSpan>>();

foreach (var item in e.CmsData.Agents)
{
    NewAgent newAgents = new NewAgent();

    newAgents.AgentName = item.AgName;

    newAgents.AgentExtension = item.Extension;

    newAgents.AgentDateTimeChange = ConvertedDateTimeUpdated;

    newAgents.AuxReasons = item.AuxReasonDescription;

    newAgents.LoginIdentifier = item.LoginId;

    newAgents.AgentState = item.WorkModeDirectionDescription;

    var timeSpanSince = DateTime.Now - item.DateTimeUpdated;
    newAgents.AgentDateTimeStateChange = timeSpanSince;

    newAgentList.Add(newAgents);

    if (item.WorkModeDirectionDescription == "AVAIL-IN")
    {
        availInItems.Add(Tuple.Create(newAgents.AgentName, timeSpanSince));
    }

    availInItems.Sort((t1, t2) => t1.Item2.CompareTo(t2.Item2));
}

在上面的代码之后发生:

var availInAgents = newAgentList
        .Where(ag => ag.AgentState == "AVAILIN") .ToList();

availInAgents.Sort((t1, t2) =>
    t1.AgentDateTimeStateChange.CompareTo(t2.AgentDateTimeStateChange));

var minTimeSpanAgent = availInAgents.FirstOrDefault();
var maxTimeSpanAgent = availInAgents.LastOrDefault();

var min3 = availInAgents.Take(3).ToList();
var max3 = availInAgents.Skip(availInAgents.Count - 3);

max3.Reverse();

这是我的问题所在,它会在下面的屏幕截图中显示信息。我只需要AgentName,我不知道如何只访问这条信息。请协助。

nextInLine.itemsource = max3.ToString();

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用Linq的Select

var agentNamesFromMax3 = max3.Select(m => m.AgentName);

答案 1 :(得分:1)

使用.Select()方法从查询中投射新类型。

nextInLine.itemsource = max3?.Select(x => x?.AgentName).FirstOrDefault() ?? string.Empty;

它将使用max3中的第一个代理并仅检索字符串AgentName,并将其分配给itemsource

在这种情况下,?是空传播运算符。如果max3为null,则在评估.Select()之前它将返回null,它与Null Coalescing运算符(??)一起将itemsource设置为空字符串。如果max3列表中的任何项为null,或者AgentName本身为null,则重复此过程。