我在{
"name": "nosetests",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"program": "${workspaceRoot}/env/dev/bin/nosetests",
"args": [
"--nocapture",
"tests"
],
"externalConsole": false,
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit"
]
},
面临一些问题。
我有两个LINQ查询:
"python.pythonPath": "${workspaceRoot}/env/dev/bin/python"
然后我正在设置DataGridView
:
var query = from x in db.grupyTowarowes
where x.typ == typMoneta
select new
{
x.grupa
};
var test = from z in dbContext.Pick
join g in db.grupyTowarowes on z.Group equals g.grupa
where z.Number == 1000 && g.typ == typMoneta
select new
{
z.Group
};
查询可能正常工作(查询没有任何错误)但是我在绑定DataGridView时遇到了一些错误,我得到的错误是:
查询包含引用在其他数据的上下文中定义的元素。
这很奇怪,因为当我设置:
DataSource
然后输出正确。
答案 0 :(得分:2)
因为您在连接中使用了两个数据上下文(db
,dbContext
),但Linq不允许基于多个上下文的连接!
因此,您可以从一个来源获取记录,迭代它以与另一个来源联接;
var list1 = dbContext.Pick.ToList();
var list2 = db.grupyTowarowes.ToList();
var test = from z in list1
join g in list2 on z.ID equals g.Id
select new
{
z.A
};
使用AsEnumerable
来实现您的查询将解决您的问题
:
var test = from z in dbContext.Pick.AsEnumerable()
join g in db.grupyTowarowes.AsEnumerable() on z.Group equals g.grupa
where z.Number == 1000 && g.typ == typMoneta
select new
{
z.Group
};
在加载数据后使用AsEnumerable
,使用Linq to Objects对内存中的数据执行任何进一步的操作。
答案 1 :(得分:0)
使用ToList()
dataGridView1.DataSource = test.ToList();
答案 2 :(得分:0)
您的第二个查询出现问题,您正尝试从两个不同的数据库中JOIN
,如下所示,这是不可能的。更好的是,您单独运行每个查询并执行LINQ - Object
联接以获得结果
from z in dbContext.Pick
join g in db.grupyTowarowes
答案 3 :(得分:0)
试试这个
dataGridView1.DataSource = new BindingList<String>(test.ToList());