我想知道是否有人可以帮我翻译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;
(在现实生活中,我实际上必须将两列匹配为关键)
结果将是
id number name
1 10 firstName
2 20 secondName
3 25 cccc
4 30 ThirdName
5 35 eee
但是如何使用DBLinq和c#中的List来更新table1?
答案 0 :(得分: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();
如果有人知道更好的解决方案,请告诉我。