所以我需要做一個查詢,我需要一堆NVL,但我需要在linq中做這些(如果它幫助db後端是BD2,我們是採用亞音速)我搜索「NVL LINQ」網頁,並沒有真正找到,所以我在這裏問有用的東西,有沒有人知道如何在LINQ中重現NVL()函數
感謝您的幫助......
所以我需要做一個查詢,我需要一堆NVL,但我需要在linq中做這些(如果它幫助db後端是BD2,我們是採用亞音速)我搜索「NVL LINQ」網頁,並沒有真正找到,所以我在這裏問有用的東西,有沒有人知道如何在LINQ中重現NVL()函數
感謝您的幫助......
可以使用空合併運算符??
:
var abs = from row in table
select new {a = row.a ?? "default", b = row.b};
運算符查看左邊的值,如果它爲null,則它使用右側的值。因此在該示例中,如果row.a
爲空,則a
變爲"default"
。
這裏假定row.a
是一個字符串。
如果有人想知道我是如何做到這一點的,我沒有使用null coalesce操作符......它甚至比這更簡單。也許我沒有清楚地解釋我的自我,但我需要做的是說如果該值爲空,那麼意味着我想包含該結果。一探究竟。
possibleVendors = (from vndMapping in db.COMPANIES_VND_MAPPINGS
join v in db.COMPANIES_CMP_COMPANIES on vndMapping.VENDOR_ID equals v.COMPANY_ID
where
!(from ex in db.COMPANIES_VND_MAPPINGS
where (ex.OEM_ID == oemId || ex.OEM_ID == null)
&& (ex.MODEL_ID == modelId || ex.MODEL_ID == null)
&& (ex.MODALITY_ID == modalityId || ex.MODALITY_ID == null)
&& (ex.CLASS_ID == productTypeId || ex.CLASS_ID == null)
&& ex.EXCLUDE.ToUpper().Equals("Y")
select ex.VENDOR_ID).Contains(vndMapping.VENDOR_ID)
&& (vndMapping.OEM_ID == oemId || vndMapping.OEM_ID == null)
&& (vndMapping.MODEL_ID == modelId || vndMapping.MODEL_ID == null)
&& (vndMapping.MODALITY_ID == modalityId || vndMapping.MODALITY_ID == null)
&& (vndMapping.CLASS_ID == productTypeId || vndMapping.CLASS_ID == null)
select new
{
vndMapping.VENDOR_ID,
v.COMPANY_NAME
}).Distinct().OrderBy(x => x.VENDOR_ID).ToDictionary(x => x.VENDOR_ID, x => x.COMPANY_NAME);
現在記住 - 我曾在我沒有設計業務邏輯(顯然)或數據庫中的一些限制 - 其他人可能有更好的方法來做到這一點,如果你有完全控制一切,這似乎工作,但。
你能給我們提供一個查詢的例子嗎? – 2011-04-06 14:38:43