【问题标题】:Querying with LINQ basic question使用 LINQ 基本问题进行查询
【发布时间】:2010-08-23 05:23:00
【问题描述】:

我今天实际上有两个问题,但它们都很小:-)

1) 哪里有学习 C# 中 linq/sql 选择的好资源?

2) 假设我有一个名为 Model 的表,具有 Name、Color、Shape 属性。如何进行查询以仅选择任何列中没有空值的行。

我试过了:

var d = database.Portfolio.SelectMany(x => x.Model.Model1 != null);

提前致谢

编辑

看起来像var models = from p in database.Models.Where(x => x.Model1 != null) select p.Model1;

【问题讨论】:

    标签: c# sql asp.net-mvc visual-studio linq


    【解决方案1】:

    当我开始使用 LINQ 时,我看了很多 101 LINQ Samples

    如果您有一个 LINQ DataContext,它通常采用 [datacontext-name].[table] 的形式。 因此,如果您的表名为 Model,则应为 [datacontext-name].Model 或在您的情况下为 database.Model

    您正在谈论一个名为 Model 的表,但在您的代码中您是从一个名为 Portfolio 的表中选择的,这有点令人困惑。但无论哪种方式,这样的事情都应该起作用。

    var result = database.Model.Where(x=> x.Name != null && x.Color != null && x.Shape != null);
    

    编辑 从 cmets 对这个答案的看法看来,问题在于您在编写查询时混合了查询模式和方法模式。

    //Query mode
    var models = from p in datDB.Models
                 where p.Model1 != null
                 select p;
    
    //Method mode
    var models = datDB.Models.Where(p => p.Model1 != null);
    

    这只是编写 LINQ 语句的不同方式。

    【讨论】:

    • 预期组子句或选择子句
    • @baron - 上面的代码有异常吗?我们需要更多关于你的数据上下文是什么样子的信息。
    • 不能编译也不例外。 jesper 是对的,我已更改为:var models = from p in datDB.Models.Where(x => x.Model1 != null)。问题是:查询正文必须以 select 子句或 group 子句结尾。
    • 我使用了 ado.net 对象映射,所以它的数据库实体
    • 大声笑,当我可以编写自己的直接 sql 查询时,它会更容易,远了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多