2017-07-31 93 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);