2

私はコレクションを扱うのはかなり新しいので、私の専門用語は正確ではないかもしれませんのでご容赦ください。

PetaPocoがクエリ結果をIEnumerableとして返し、結果ごとに1つのコレクションを返します。コレクションを評価して、各コレクションの特定のフィールドから特定の文字列を取得したいと思います。これまでのところ、以下のスニペットに従って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()は、TがOrderFactであるIEnumerableを返します。

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";
    }

LINQ!

于 2013-01-04T19:07:14.013 に答える