C#访问IEnumerable集合

C#访问IEnumerable集合,c#,ienumerable,C#,Ienumerable,我是一个新的收藏家,所以请记住我的行话可能并不准确 我让PetaPoco以IEnumerable的形式返回查询结果,每个结果一个集合。我想计算集合,从每个集合中的特定字段中获取特定字符串。到目前为止,我能够迭代可枚举项,并且似乎能够根据下面的代码片段访问对象,但是当我在调试中查看c.Language时,它只是字符串的第一个字符(例如,c.Language应该等于“JPY”,它只等于“J”) 我这样做完全错了吗?谢谢你的建议 public void AddContactOrder(object s

我是一个新的收藏家,所以请记住我的行话可能并不准确

我让PetaPoco以IEnumerable的形式返回查询结果,每个结果一个集合。我想计算集合,从每个集合中的特定字段中获取特定字符串。到目前为止,我能够迭代可枚举项,并且似乎能够根据下面的代码片段访问对象,但是当我在调试中查看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";
            }

        }

您最好只使用foreach循环:

foreach (var c in new OrdersFactsController().getOrderFacts(base.ModuleID))
{
    if (c.Language == "JPY")
        test = "okay";
}
public void AddContactOrder(对象发送方,事件参数e)
{
IEnumerable orderFacts=new OrdersFactsController().getOrderFacts(base.ModuleId);
var检验=”;
if(orderFacts.Any(x=>x.Language==“JPY”))test=“OK”;
}

林克

您可以使用
系统。Linq


您能否通过调试检查
c
c.Language
的值,并查看其中的预期值?旁注:您真的想手工进行迭代吗
foreach
或者更好的LINQ
。Where
看起来出错的几率要小得多。@AlexeiLevenkov看起来他想要
任何
,而不是
Where
,但是是的。另外,
IEnumerator
没有被处理,他几乎肯定应该使用
IEnumerable
,而不仅仅是
IEnumerable
getOrderFacts()
是否有可能返回字符串?如果是这样的话,您正在枚举它的
char[]
,因此第一个值是“J”而不是“JPY”。这里似乎主要是我的错。上面的代码确实有效,我只是针对错误的字段进行了测试。“日元”是c货币的结果。c、 语言正确的结果实际上是“J”。但由于使用LINQ语句的建议和示例,我确实学到了一种更有效的方法。再次感谢你们真是太棒了!
foreach (var c in new OrdersFactsController().getOrderFacts(base.ModuleID))
{
    if (c.Language == "JPY")
        test = "okay";
}
    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";
    }
public void AddContactOrder(object sender, EventArgs e)
{
    var orderFacts = new OrdersFactsController().getOrderFacts(base.ModuleId);
    var test = orderFacts.Any(x => x.Language == "JPY") ? "okay" : "";

}