1

アップデート:

xml を coldfusion のクエリ テーブルに変換したので、これが解決に役立つかもしれません。

だから私のデータは次のとおりです。

[id] | [code] | [desc] | [supplier] | [name] | [price]
------------------------------------------------------
1    | ABCDEF | "Tst0" |   "XYZ"    | "Test" | 123.00
2    | ABCDXY | "Tst1" |   "XYZ"    | "Test" | 130.00
3    | DCBAZY | "Tst2" |   "XYZ"    | "Tst2" | 150.00

ここで必要なのは、linq to xml クエリが以下に出力するものです。出力は次のようになります (入力しやすいように JSON で記述します)。

[{
    "code": "ABCD", 
    "name": "Test", 
    "products": 
        {
            "id": 1,
            "code": "ABCDEF",
            "desc": "Tst0",
            "price": 123.00
        },
        {
            "id": 2,
            "code": "ABCDXY",
            "desc": "Tst1",
            "price": 130.00
        }
},
{
    "code": "DCBA", 
    "name": "Tst2", 
    "products": 
        {
            "id": 3,
            "code": "DCBAZY",
            "desc": "Tst2",
            "price": 150.00
        }
}]

ご覧のとおり、「CODE」と「Supplier」コードの最初の 4 文字でグループ化します。

ありがとう


次の LINQ to XML クエリを SQL に変換するにはどうすればよいですか?

from q in query
group q by new { Code = q.code.Substring(0, 4), Supplier = q.supplier } into g
select new
{
  code = g.Key.Code,
  fullcode = g.FirstOrDefault().code,
  supplier = g.Key.Supplier,
  name = g.FirstOrDefault().name,
  products = g.Select(x => new Product { id = x.id, c = x.code, desc = string.IsNullOrEmpty(x.desc) ? "Description" : x.desc, price = x.price })
}

私が思いつくことができる最高のもの:

SELECT c, supplier, n
FROM products
GROUP BY C, supplier, n 

そこにサブクエリを取得する方法や、コードの部分文字列を取得する方法がわかりません。

ps: これは coldfusion 用なので、SQL のバージョンは ms sql とは異なる可能性があると思います。

4

1 に答える 1

0

最も簡単な方法は、プロファイラーをデータベースにアタッチし、linq-to-SQL エンジンによって生成されるクエリを確認することです。

于 2013-07-04T07:16:19.187 に答える