1

誰かが MySQL クエリを (Db)LINQ ステートメントに変換するのを手伝ってくれないだろうか。

やりたいことのテストケースを作ったので、データも構造も本当にやりたいこととは違いますが、あくまで動作させるためのものです。

MySQL データベースには、次のテーブルがあります。

CREATE TABLE `mytable1` 
( 
   `id` int(11) NOT NULL AUTO_INCREMENT, 
   `number` int(11) NOT NULL, 
   `name` varchar(20) COLLATE latin1_general_ci NOT NULL, 
   PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci 

これが内容です

id      number  name   
1       10      aaa   
2       20      bbb   
3       25      cccc   
4       30      ddd   
5       35      eee   

C# 内で DBLinq を使用して、このテーブルに接続します。C# プログラムには、次のようなリストもあります。

List<myDataFields> myNewData = new List<myDataFields>(); 

public class myDataFields   
{   
    public int number { get; set; }   
    public string name { get; set; }   
}   

リストの内容は次のとおりです。

number  name     
10      firstName   
20      secondName   
30      ThirdName   

リストの内容が mysql のテーブル (table2) である場合、次のクエリで table1 を更新できます。

update mytable1,mytable2 set mytable1.name=mytable2.name where 
mytable1.number=mytable2.number; 

(実際には、実際には2つの列をキーに一致させる必要があります)

結果は次のようになります。

id      number  name   
1       10      firstName   
2       20      secondName   
3       25      cccc   
4       30      ThirdName   
5       35      eee   

しかし、DBLinq と c# 内のリストを使用して、table1 を更新するにはどうすればよいでしょうか?

4

1 に答える 1

0

このような問題を解決しました:

List<myDataFields> myDFList = new List<myDataFields>();
myDFList.Add(new myDataFields { name= "name123", number= 20 });
myDFList.Add(new myDataFields { name = "name456", number = 35 });

int[] getNumbers = (from numbers in myDFList select numbers.number).ToArray();

var dataInDb = from x in _db.mytable1 where getNumbers.Contains(x.Number) select x;

foreach (var row in dataInDb)
{
    row.Name = (from mdf in myDFList where mdf.number == row.Number select mdf.name).First();
}

_db.SubmitChanges();

誰かがより良い解決策を知っているなら、私に知らせてください。

于 2010-11-01T10:10:48.680 に答える