0

債券のコレクションと、成熟度が 200000 を超える満期の関連コレクションを取得したいと考えています。

編集:(各債券の満期コレクションに満期 > 200000 のみを含めたい)

これは、クラス定義と、クエリのテスト データを設定するメソッドを含む program.cs です。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqToObjects
{
class Program
{
    static void Main(string[] args)
    {
        Program.QueryCollection();
        Console.ReadLine();
    }
    public static void QueryCollection()
    {
        List<Bond> bonds = Program.BuildCollections();
        //how do I get a list of Bonds that have a maturity.MatAmount > 200,000?
    }
    public static List<Bond> BuildCollections()
    {
        List<Bond> bonds = new List<Bond>();
        Bond bond;

        for (int i = 1; i <= 10; i++)
        {
            bond = new Bond() {ID = i, Title = "Bond Title " + i.ToString() };
            for (int j = 1; j <= 10; j++)
            { 
                bond.Maturities.Add(new Maturity(){ID = j, BondID = i, MatDate = DateTime.Today.AddDays(j), MatAmount = 152000 * j});
            }

            bonds.Add(bond);
        }
        return bonds;
    }
}
public class Bond
{
    public int ID { get; set; }
    public string Title { get; set; }
    public List<Maturity>  Maturities { get; set; }
    public Bond()
    {
        Maturities = new List<Maturity>();
    }
}
public class Maturity
{
    public int ID { get; set; }
    public int BondID { get; set; }
    public DateTime MatDate { get; set; }
    public int MatAmount { get; set; }
}

}
4

2 に答える 2

1

これはどう?

IEnumerable<Bond> bigBonds = bonds.Where(b => b.Maturities.Any(m => m.MatAmount > 200000));
于 2012-09-26T23:35:27.833 に答える
0

私はあなたが何を探しているのか正確にはわかりませんが、あなたの絆を得るには次のようなことをしてください:

var filteredBonds = 
        (
            from bond in bonds
            join maturity in maturities on bond.ID equals maturity.BondID
            where maturity.MatAmount > 200000
            select new { bond.ID, bond.Title, maturity.MatAmount, maturity.MatDate }
        ).ToList();

ToArray()はオプションです。必要に応じて、テーブル形式のままにしておくこともできます。結果をどうしたいのかよくわかりません。

また、データ構造内の債券と満期を分離することもできます。成熟度オブジェクトのメンバーとしてBondIDを保存しているので、成熟度のリストを実際に用意する必要はないと思います。少し冗長に思えますが、正直なところ私はLinqを使用していないので、おそらくそれが道のりです。あなたの呼び出し。

于 2012-09-26T23:29:51.783 に答える