Linq选择过滤不起作用

时间:2014-03-08 14:14:21

标签: c# linq linq-to-sql

我正在尝试在已过滤的数据库中选择一个字段最后一条记录(这与上次插入的记录不同)。我尝试使用控制器中的以下代码,但不是字段值,我得到“真”或“假”,这取决于过滤后是否有结果。

List<Pozicije> poz = new List<Pozicije>();
poz = db.Pozicijes.Where(p => p.grupa == grupa)
                    .OrderBy(p => p.sifra_pozicije).ToList();
string pos = poz.Select(p => p.sifra_pozicije.Contains(s)).LastOrDefault().ToString();

有人能指出我如何获得我需要的价值吗?

2 个答案:

答案 0 :(得分:2)

试试这个。我已将您的查询的两个部分合并为一个。

 var pos =
     Convert.ToString(db.Pozicijes.Where(p => p.grupa == grupa
                                              && p.sifra_pozicije.Contains(s))
                                  .OrderByDescending(p => p.sifra_pozicije)
                                  .Select(p => p.sifra_pozicije)
                                  .FirstOrDefault());

如果它不起作用,您可能需要告诉我们ssifra_pozicije的类型。

答案 1 :(得分:1)

LINQ to Entities / LINQ TO SQL不支持

LastOrDefault。您需要执行OrderByDescending然后获取First记录。像:

string pos = db.Pozicijes.Where(p => p.grupa == grupa &&  p.sifra_pozicije.Contains(s)))
            .OrderByDescending(p=> p.sifra_pozicije)
            .Select(r=> r.sifra_pozicije)
            .First();