【问题标题】:Linq Query QuestionLinq 查询问题
【发布时间】:2009-12-30 16:58:40
【问题描述】:

我有这段代码从被指控的犯罪者表中返回一个 caseID。此表还有一列“LastName”。我想搜索 caseID 并返回 LastName 但我不知道如何编码。我一直在微软网站上寻找 LINQ to SQL 示例,但仍然无法弄清楚。任何帮助将不胜感激!

肯

public static class AllegedPerpetratorRepository
{
    public static IQueryable<AllegedPerpetrator> GetByCaseID(
        this IQueryable<AllegedPerpetrator> source,
        int caseID)
    {
        return (from s in source where s.CaseID.Equals(caseID) select s); 
    }
}

【问题讨论】:

    标签: c# linq linq-to-sql iqueryable


    【解决方案1】:

    最后应该是:

    。 . . select s.LastName);

    编辑:

    Ahmed 的建议和 Jeroen 的修复:

    public static class AllegedPerpetratorRepository
    {
        public static IEnumerable<string> GetByCaseID(
            this IQueryable<AllegedPerpetrator> source,
            int caseID)
        {
            return (from s in source where s.CaseID.Equals(caseID) select s.LastName); 
        }
    }
    

    【讨论】:

    • 另外,方法的返回类型会变成LastName的类型,大概是string
    • 函数类型不应该是字符串。它是一个 IEnumerable 或者你应该将 .First() 应用于返回。
    【解决方案2】:

    您是否使用 Visual Studio 映射器工具从数据库创建了 LINQ to SQL 类?

    您可以添加一个“新项目”,然后根据您的数据库架构添加一个 LINQ to SQL 类。该工具将为您从表中生成类。

    然后您可以使用这些代表数据库列和表的类(每个表一个类)来使用 LINQ。

    如果你用谷歌搜索的话,有一些关于 LINQ to SQL 的好教程。

    【讨论】:

      【解决方案3】:
      var perps = dataContext.AllegedPerpetrator.Where(p=>p.CaseID == caseIdValue)
                  .Select(p=>p.LastName)
      

      CaseIdValue 是您传入的内容=

      【讨论】:

        【解决方案4】:

        如果给定的 case id 有一个且只有一个记录,您可以使用 Single 表达式

        var lastName = dataContext.AllegedPerpetrator.SingleOrDefault(i => i.CaseID == caseId).LastName

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多