2016-08-12 154 views
0

我有一個名爲「[PcValueSet]」的表。Linq lambda表達式中存在的SQL

表具有字段「[FieldValues]」。

字段值是一個XML字段。

以下是我用來查找結果的表格上的where子句。

WHERE [FieldValues].exist('/_DoorConfig2Page3Table/_DoorConfig2Page3Row/txtDoorDesign') = 1 

在C#中的方法,我需要做類似的事情只有我需要得到「txtDoorDesign」,而不是價值。

我有以下但我不知道如何創建一個類似的功能,「。存在」在sql提供,也不知道如何獲取元素的值而不是元素的值。

var temp = Db.PcValueSet.Where(x => x.Company == Session.CompanyID && 
       x.FieldValues.the xml element is not null or empty).ToList(); 

所以我需要找到並返回裏面的元素的值和xml列。

+0

我相信這在EF6中仍然不被支持。看到可能的重複:http://stackoverflow.com/a/1104689/1260204。你最好的選擇是創建一個存儲過程並從EF調用它。 – Igor

回答

0

如果我的理解正確,您將使用SELECT與給定的WHERE來檢索您的數據。

正如添加到您的查詢:

[FieldValues].value('(/_DoorConfig2Page3Table/_DoorConfig2Page3Row/txtDoorDesign)[1]','varchar(max)') AS txtDoorDesing 

你的結果集將包括txtDoorDesign價值不失.exist()性能。

+0

好吧,這是可以理解的,但我該如何將其轉換爲C#中的lambda表達式? – lemunk

+0

@lemunk對不起,不知道...什麼是列類型* FieldValues *?這可能是'字符串'。我想你必須將其轉換爲'XDocument'來執行XML特定的查詢。我很確定,這可以隱式完成,但必須自己測試。 – Shnugo