2017-07-31 118 views
-2
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; 

我有这个查询,以便我可以根据它的序列找到仪表的电源类型。到目前为止,我已经写了这个函数:使用LINQ查询SQL数据库

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的更多信息的方向也欢迎。

+0

你到目前为止尝试过什么?你的数据库表是什么样的?你有没有使用实体框架设置数据上下文? – slugster

+0

你的转换看起来不错,但通常你会用LINQ来找到你的答案:'var ans =(从meter中查询meter.serial ==串行选择计量器).SingleOrDefault();返回(米==空)? “未指定仪表类型”:meter.type;' – NetMage

回答

0

不知道你在做什么很少有可以做的事情给你具体的帮助。首先你想熟悉将sql语句翻译成LINQ。

LINQ有一个以from开头的查询语法,因为那是如何定义数据源。 SELECT FirstName FROM Authors成为

from auth in db.Authors 
select auth.FirstName 

其中DB是一个DataContext参考在slugster的评论建议。

你可以寻找更多的信息,LINQ at the following url

2

你是弥补读了相当多的材料,你应该开始之前。

  1. 阅读关于实体框架here
  2. 阅读关于LINQ to SQL here

希望一旦你有,你会发现你的问题归结为下面的代码。

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