【问题标题】:Querying SQL Database using LINQ使用 LINQ 查询 SQL 数据库
【发布时间】:2017-07-31 11:30:11
【问题描述】:
 SELECT Meter.SerialNumber as serial, 
 SupplyPoint.Id as supplypoint,
 SupplyType.Id as supplytype,
 SupplyType.Name as supplytypename
 FROM Meter
 INNER JOIN SupplyPoint ON Meter.SupplyPointId = SupplyPoint.Id
 INNER JOIN SupplyType ON SupplyPoint.SupplyTypeId = SupplyType.Id;

我有这个查询,以便我可以根据其序列号找到仪表的供应类型。到目前为止,我已经编写了这个函数:

var query = from meters in db.Meters
join supplyPoint in db.SupplyPoints on meters.SupplyPointId
equals supplyPoint.Id
join supplyType in db.SupplyTypes on supplyPoint.SupplyTypeId equals             
supplyType.Id
select new { serial = meters.SerialNumber, type = supplyType.Name };
foreach (var meter in query)
    {
        if (meter.serial == serial)
            return meter.type;
    }
return "Meter Type Not Specified";`

所以我调用 FindType(string serial) 并返回类型。谁能建议更好的代码来转换这样的查询?也欢迎任何有关在何处了解有关 LINQ 的更多信息的说明。

【问题讨论】:

  • 到目前为止你尝试过什么?你的数据库表是什么样的?您是否使用实体框架设置了数据上下文?
  • 您的转换看起来不错,但通常您也会使用 LINQ 来找到答案:var ans = (from meter in query where meter.serial == serial select meter).SingleOrDefault(); return (meter == null) ? "Meter Type Not Specified" : meter.type;

标签: c# sql visual-studio linq


【解决方案1】:

在开始之前,您需要阅读大量材料。

  1. 阅读实体框架here
  2. 了解 LINQ to SQL here

希望,一旦你有了,你就会意识到你的问题归结为以下代码。

var result = context.YourTable.FirstOrDefault(r => r.Field == searchValue);

【讨论】:

    【解决方案2】:

    如果您不了解您正在处理的内容,则几乎无法为您提供具体的帮助。首先你要熟悉将 sql 语句翻译成 LINQ。

    LINQ 具有以 from 开头的查询语法,因为这是定义数据源的方式。 SELECT FirstName FROM Authors变成了

    from auth in db.Authors
    select auth.FirstName
    

    其中 db 是对 slugster 评论中建议的数据上下文的引用。

    您可以在linqat the following url寻找更多信息

    【讨论】:

      猜你喜欢
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多