注意moneta不是字符串的集合。它是一个对象集合,具有名为"grupa"的字符串属性。
我对LINQ完全陌生,我想把我的一些SQL查询重写到LINQ中(只是为了学习),但我一开始就被卡住了。也许解决方案很简单,但正如我所说,我是一个全新的人,我并没有找到解决方案。
我有一个问题:
string typMoneta = textBox1.Text;
var moneta = from x in db.grupyTowarowes
where x.typ == typMoneta
select new
{
x.grupa
};
当我设置时,哪个工作正常
dataGridView1.DataSource = moneta;
然后我得到了输出
我想在我的第二个查询中使用这个输出:
var query = from c in dbContext.Picking
where c.Number == 1000 && c.Group == moneta
select new
{
c.id
};
c.Group == moneta
出现问题。我不知道正确的语法。有人能帮我吗?
我想您打算使用moneta.Contains(c.Group)
。在第一个查询中,确保使用ToList()
将数据加载到内存中。
IList<string> moneta = (from x in db.grupyTowarowes
where x.typ == typMoneta
select x.grupa).ToList();
var query = (from c in dbContext.Picking
where c.Number == 1000 && moneta.Contains(c.Group)
select c.id).ToList();
moneta
是IEnumerable<T>
,其中T
是grupa
的类型话虽如此,你应该写下你的查询如下:
var query = from c in dbContext.Picking
where c.Number == 1000
&& moneta.Contais(c.Group)
select new
{
c.id
};
或使用流畅的语法,如以下所示:
var query = dbContext.Picking
.Where(pick => pick.Number == 1000
&& moneta.Contains(pick.Group))
.Select(pick => pick.id);
这对你有用吗?
var query =
from c in dbContext.Picking
where c.Number == 1000
&& moneta.Any(m => m.grupa == c.Group)
select new { c.id };
你也可以这样做:
// Get list of strings
var groups = moneta.Select(m => m.grupa).ToList();
// Get items where "Group" value is one of the strings in groups list, above.
var query =
from c in dbContext.Picking
where c.Number == 1000
&& groups.Contains(c.Group)
select new { c.id };