LINQ - 使用彼此的结果

时间:2016-07-21 21:14:18

标签: c# linq

我对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;

Then i got output

我想在第二个查询中使用此输出:

var query = from c in dbContext.Picking
            where c.Number == 1000 && c.Group == moneta
            select new
            {
                c.id
            };

问题在于c.Group == moneta。我不知道正确的语法。有人能帮助我吗?

3 个答案:

答案 0 :(得分:1)

我认为您打算使用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();

答案 1 :(得分:0)

monetaIEnumerable<T>,其中Tgrupa的类型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);

或流利的语法如下:

xobj.status === 404

答案 2 :(得分:0)

请注意,moneta不是字符串的集合。它是具有名为&#34; grupa&#34;的字符串属性的对象集合。

这对你有用吗?

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 };