2017-06-22 4 views
0

私はvb.netからc#.netにコードを変換するためにこのプロジェクトに取り組んできましたが、私はVBで作業したことはありません。このコードには多くのLinqステートメントがあり、その中には 'with'ステートメントが含まれていますが、これはvbのみにローカルであることがわかります。私は研究を行って、どのように正規表現をC#に変換するのか見つけましたが、linqクエリにその種のものを含める方法はありません。どんな助けもありがとう。ここで私はmjwillsはすでに指摘したように彼のリンクにVbからC#with文を含むlinqクエリの変換

Dim query = (From k In dt Select New ProductDecode With { 
    .CompanyCode = k.Field(Of Decimal)("CompanyCode"), 
    .ProductType = k.Field(Of String)("ProductType"), 
    .Product = k.Field(Of String)("Product"), 
    .ProductDescription = k.Field(Of String)("ProductDescription")}).ToList()` 
+0

https://stackoverflow.com/questions/528610/what-does-the-new-with-syntax-do-in-vb-linqは興味深いかもしれません。 – mjwills

答えて

0

を変換しようとしている文があり、Withは匿名型の代わりに、既存のものを示唆しています。 C#で、私はあなたがこれを行う方法を知っていると思います。

0

VB.Net New ClassName With { .Field = Value, ... }構文は、構築中のフィールドの初期化です。 C#ではnew ClassName { Field = Value, ... }です。次のようにだからあなたのコードがconvetedすることができる。

var query = (from k in dt select new ProductDecode { 
    CompanyCode = k.Field<decimal>("CompanyCode"), 
    ProductType = k.Field<string>("ProductType"), 
    Product = k.Field<string>("Product"), 
    ProductDescription = k.Field<string>("ProductDescription") 
}).ToList(); 
+0

これまで私が以前に持っていた多くのエラーがありましたが、今では小数と文字列の表現用語エラーが無効になっています。私もキャスト型として使ってみましたが、うまくいきませんでした – zmaneval

+0

ああ、 'Field ()'は拡張メソッドなので、かっこの代わりにかっこを使うべきでした。更新された回答をご覧ください。 –

1

ですから、DataTableList<ProductDecode>に変換したい:

var query = from row in dt.AsEnumerable() 
      select new ProductDecode 
      { 
       CompanyCode = row.Field<decimal>("ProductType"), 
       ProductType = row.Field<string>("ProductType"), 
       Product = row.Field<string>("Product"), 
       ProductDescription = row.Field<string>("ProductDescription"), 
      }; 
var list = query.ToList(); 

のみメソッドの構文(VB.NETよりもC#でのよりよい)で:

var list = dt.AsEnumerable() 
    .Select(row => new ProductDecode 
    { 
     CompanyCode = row.Field<decimal>("ProductType"), 
     ProductType = row.Field<string>("ProductType"), 
     Product = row.Field<string>("Product"), 
     ProductDescription = row.Field<string>("ProductDescription"), 
    }).ToList(); 
関連する問題