2

こんにちは私のコードは以下の通りです:

 List<COSIS_DAL.PaymentsHeader> pheadr = c.GetPaymentHeaderByPayDate(PayDate);

 public List<PaymentsHeader> GetPaymentHeaderByPayDate(DateTime payDate)
    {
        CosisEntities db = new CosisEntities();

        IQueryable<PaymentsHeader> query = (from p in db.PaymentsHeaders
                    where p.PaymentDate.Value.Day == payDate.Day
                    && p.PaymentDate.Value.Month == payDate.Month
                    && p.PaymentDate.Value.Year == payDate.Year
                    select p);

        return query.ToList();

    }

だから私は pheadr から次のような文字列にデータを保存したい:

     string keyword = Convert.ToString(pheadr.Select(m => m.VoucherNumber));

しかし、リスト内の値を取得していません。値の代わりに、これを取得しています:

      System.Linq.Enumerable+WhereSelectListIterator`2[COSIS_DAL.PaymentsHeader,System.String]

これについて私を助けてください。これには本当に困っています。前もって感謝します。

4

4 に答える 4

4

問題は、それが単一pheadr.Select(m => m.VoucherNumber)の値ではないことです...それは値のコレクションです...あなたは試すことができます:

string keyword = string.Join(", ", pheadr.Select(m => Convert.ToString(m.VoucherNumber)));

で区切られた複数のバウチャー番号が本当に必要な場合,

または、別のコレクションに入れることもできます。

List<string> vouchers = pheadr.Select(m => Convert.ToString(m.VoucherNumber)).ToList();
于 2013-08-30T10:02:58.333 に答える
2

多分このようなもの:

var keywords = pheadr.Select(x=>x.VoucherNumber.ToString()).ToList();

文字列のリストにすべてのバウチャー番号を選択します。それはあなたが望んでいたものですか?keywordsList<string>

取得している文字列は、Linq 式を内部フィールドではなく文字列に変換しているためです。

最初のレコードのみの場合、次を使用します。

var keyword = Convert.ToString(pheadr.First().VoucherNumber);

常に 1 つの値を返すかどうかわからない場合は、次を試してください。

var ph = pheadr.FirstOrDefault();
var keyword = ph!=null?Convert.ToString(ph.VoucherNumber):"";

編集:@xanatosが提案したように、Convert代わりに使用しましたToString

于 2013-08-30T10:01:35.583 に答える