1

LINQ で以下をどのように表現しますか?

select * from table_1 t1
join table_2 t2 on t1.col1 = t2.col1 and t1.col2 <= t2.col2

これが私が試したことですが、望ましい結果が得られません。2 つのテーブルを結合しようとしていますが、table_1数量が数量以上ではないtable_2ためWidgetA 、結果 ( xList ) にレコードが含まれているとは思われません。

    List<anObj> table_1 = new List<anObj>();
    table_1.Add(new anObj() { Product = "WidgetA", Quantity = 0 });
    table_1.Add(new anObj() { Product = "WidgetB", Quantity = 3 });

    List<anObj> table_2 = new List<anObj>();
    table_2.Add(new anObj() { Product = "WidgetA", Quantity = 1 });
    table_2.Add(new anObj() { Product = "WidgetB", Quantity = 1 });

    var xList =
    from t1 in table_1
    join t2 in table_2
        on t1.Product equals t2.Product
    where t1.Quantity >= t2.Quantity
    select new
    {
        t1,
        t2
    };

    if (xList.Any())
        Console.WriteLine("Found");
    else
        Console.WriteLine("None"); //I'm looking for this result.           
4

3 に答える 3

4
from t1 in t1datatable
join t2 in t2datatable
        on t1.col1 equals t2.col1
where t1.col2 <= t2.col2
select new
{
    t1,
    t2 
};
于 2012-10-11T13:56:15.853 に答える
2

最も簡単な方法は、次のように記述することです。

var q = from t1 in table_1
        from t2 in table_2.Where(x => t1.col1 == x.col1 && t1.col2 <= x.col2)
        select new { t1, t2 };

(そう見えるかもしれませんが、データベースにクロス結合実行計画を作成しません)

于 2012-10-11T14:00:11.497 に答える
1
var result = from t1 in db.table_1
             from t2 in db.table_2.Where(x => t1.col1 == x.col1)
                                  .Where(x => t1.col2 <= x.col2)
             select new {t1, t2};
于 2012-10-11T14:01:15.700 に答える