5

これらから2つのリストを結合しようとしています:

var quartEst = Quarterly_estimates
.OrderByDescending (q => q.Yyyy)
.ThenByDescending (q => q.Quarter)
.Where (q => 
    q.Ticker.Equals("IBM")
    &&
    q.Eps != null
    )
.Select (q => new {
    ticker = q.Ticker,
    Quarter = q.Quarter,
    Year = q.Yyyy,
    Eps = q.Eps})
.AsEnumerable()
.Where (q => Convert.ToInt32(string.Format("{0}{1}", q.Year, q.Quarter)) > Convert.ToInt32(finInfo) );

var quartAct = Quarterlies
.OrderByDescending (q => q.Yyyy)
.ThenByDescending (q => q.Quarter)
.Where (q => 
    q.Ticker.Equals("IBM")
    &&
    Convert.ToInt16(q.Yyyy) >= DateTime.Now.Year - 3
    )
.Select (q => new {
    Tick = q.Ticker,
    Quarter = q.Quarter,
    Year = q.Yyyy,
    Eps = q.Eps_adj})
.AsEnumerable()
.Where (q => Convert.ToInt32(string.Format("{0}{1}", q.Year, q.Quarter)) <= Convert.ToInt32(finInfo));

単純な Union コマンドのエラーが表示されます。

var quartComb = quartEst.Union(quartAct);

エラーは次のとおりです。

Instance argument: cannot convert from 'System.Collections.Generic.List<AnonymousType#1>' to 'System.Linq.IQueryable<AnonymousType#2>'

このマージを達成するために何をする必要がありますか?

4

2 に答える 2

6

このメソッドを使用するUnionには、コレクションの型が同じである必要があります。2 つの匿名型が同じと見なされるためには、まったく同じ型を持つまったく同じメンバーを持っている必要があります。

これを試して:

var quartEst = Quarterly_estimates
    ...
    .Select (q => new {
        Tick = q.Ticker,       // renamed ticker to Tick
        Quarter = q.Quarter,
        Year = q.Yyyy,
        Eps = q.Eps})
    ...

var quartAct = Quarterlies
    .Select (q => new {
        Tick = q.Ticker,
        Quarter = q.Quarter,
        Year = q.Yyyy,
        Eps = q.Eps_adj})
    ...

var quartComb = quartEst.Union(quartAct);
于 2013-06-27T02:56:41.963 に答える