2

我对使用收藏还很陌生,所以请耐心等待我的行话甚至可能不准确。

我让 PetaPoco 将查询结果作为 IEnumerable 返回,每个结果一个集合。我想评估集合以从每个集合中的特定字段获取特定字符串。到目前为止,我能够迭代 Enumerable 并且似乎能够根据下面的代码段访问对象但是当我在调试中查看 c.Language 时,它​​只是字符串的第一个字符(例如,c.Language 应该等于“ JPY”它仅等于“J”)

我这样做完全错了吗?感谢您的建议

public void AddContactOrder(object sender, EventArgs e)
    {
        IEnumerable OrderFact = new OrdersFactsController().getOrderFacts(base.ModuleId);
        IEnumerator enumerator = OrderFact.GetEnumerator();
        var test = "";
        List<string> lang = new List<string>();
        while (enumerator.MoveNext())
        {

            OrderFact c = (OrderFact)enumerator.Current;
            if (c.Language == "JPY")
            {
                test = "okay";
            }

        }

}

getorderFacts() 返回一个 IEnumerable,其中 T 是 OrderFact

public class OrderFact
{
    public int ID { get; set; }
    public int ModuleId { get; set; }
    public string ProdCode { get; set; }
    public string Language { get; set; }
    public string Currency { get; set; }
    public string KeyCodes { get; set; }
    public string OrderSourceCode { get; set; }
    public string OfferingCode { get; set; }
    public string JobNumber { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime ModifiedDate { get; set; }
}
4

3 回答 3

6

你最好只使用一个 foreach 循环:

foreach (var c in new OrdersFactsController().getOrderFacts(base.ModuleID))
{
    if (c.Language == "JPY")
        test = "okay";
}
于 2013-01-04T19:04:49.107 回答
5

您可以使用System.LinqAny扩展方法

public void AddContactOrder(object sender, EventArgs e)
{
    var orderFacts = new OrdersFactsController().getOrderFacts(base.ModuleId);
    var test = orderFacts.Any(x => x.Language == "JPY") ? "okay" : "";

}
于 2013-01-04T19:08:53.587 回答
3
    public void AddContactOrder(object sender, EventArgs e)
    {
        IEnumerable<OrderFact> orderFacts = new OrdersFactsController().getOrderFacts(base.ModuleId);
        var test = "";
        if(orderFacts.Any(x => x.Language == "JPY")) test="okay";
    }

林克!

于 2013-01-04T19:07:14.013 回答