[SQL] LINQ에서 SQL ISNULL의 등가?
SQLLINQ에서 SQL ISNULL의 등가?
SQL에서 당신이 ISNULL 실행할 수 있습니다 (널 (null)을, '') 당신은 어떻게 LINQ 쿼리에 이런 짓을 했을까?
나는이 쿼리에 합류 :
var hht = from x in db.HandheldAssets
join a in db.HandheldDevInfos on x.AssetID equals a.DevName into DevInfo
from aa in DevInfo.DefaultIfEmpty()
select new
{
AssetID = x.AssetID,
Status = xx.Online
};
하지만 난 그게 널 (null) 인 경우 나 false로 설정하는 방법이 아닌 널 (NULL) (xx.online)는 비트 유형이 열을가?
해결법
-
==============================
1.AA는 null이 될 수있는 세트 / 객체이기 때문에, 당신은 AA == 널 (null)을 확인할 수 있나요?
AA는 null이 될 수있는 세트 / 객체이기 때문에, 당신은 AA == 널 (null)을 확인할 수 있나요?
(AA / XX) 질문에 오타 (교환 할 수 있습니다; XX에 대한 원래의 질문 회담 만 AA 정의)
즉
select new { AssetID = x.AssetID, Status = aa == null ? (bool?)null : aa.Online; // a Nullable<bool> }
당신이 원하는 경우 또는 기본 (NOT NULL) 거짓으로 :
select new { AssetID = x.AssetID, Status = aa == null ? false : aa.Online; }
최신 정보; downvote에 대한 응답으로, 좀 더 조사했습니다 ... 사실이다, 이것은 올바른 접근 방식입니다! 여기에 Northwind를에 예입니다 :
using(var ctx = new DataClasses1DataContext()) { ctx.Log = Console.Out; var qry = from boss in ctx.Employees join grunt in ctx.Employees on boss.EmployeeID equals grunt.ReportsTo into tree from tmp in tree.DefaultIfEmpty() select new { ID = boss.EmployeeID, Name = tmp == null ? "" : tmp.FirstName }; foreach(var row in qry) { Console.WriteLine("{0}: {1}", row.ID, row.Name); } }
: 거의 우리가 원하는 것을 (이 ISNULL 아니지만, 가까운 충분하다) - 그리고 여기 TSQL있어
SELECT [t0].[EmployeeID] AS [ID], (CASE WHEN [t2].[test] IS NULL THEN CONVERT(NVarChar(10),@p0) ELSE [t2].[FirstName] END) AS [Name] FROM [dbo].[Employees] AS [t0] LEFT OUTER JOIN ( SELECT 1 AS [test], [t1].[FirstName], [t1].[ReportsTo] FROM [dbo].[Employees] AS [t1] ) AS [t2] ON ([t0].[EmployeeID]) = [t2].[ReportsTo] -- @p0: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [] -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
QED?
-
==============================
2.당신은을 사용할 수 있습니다 ?? 운영자가 기본 값을 설정하지만, 먼저 필요한 필드에 DBML 파일에서 true로 Null 허용 속성을 설정해야합니다 (xx.Online)
당신은을 사용할 수 있습니다 ?? 운영자가 기본 값을 설정하지만, 먼저 필요한 필드에 DBML 파일에서 true로 Null 허용 속성을 설정해야합니다 (xx.Online)
var hht = from x in db.HandheldAssets join a in db.HandheldDevInfos on x.AssetID equals a.DevName into DevInfo from aa in DevInfo.DefaultIfEmpty() select new { AssetID = x.AssetID, Status = xx.Online ?? false };
-
==============================
3.나는 종종 (이산 값 반대) 시퀀스이 문제가 있습니다. 나는 INT의 순서를 가지고 있고, 나는 목록 내가 오류 "InvalidOperationException이 전송됩니다 비어 SUM 그들, 원하는 경우 : 널 (null) 값이 아닌 널 (NULL) 값이 유형 선택 System.Int32와 멤버에 할당 할 수 없습니다 유형.".
나는 종종 (이산 값 반대) 시퀀스이 문제가 있습니다. 나는 INT의 순서를 가지고 있고, 나는 목록 내가 오류 "InvalidOperationException이 전송됩니다 비어 SUM 그들, 원하는 경우 : 널 (null) 값이 아닌 널 (NULL) 값이 유형 선택 System.Int32와 멤버에 할당 할 수 없습니다 유형.".
나는 내가 nullable 형식으로 순서를 캐스팅함으로써이 문제를 해결할 수 있습니다 찾을 수 있습니다. nullable 형식의 시퀀스가 비어 있으면 SUM 다른 집계 연산자는이 오류가 발생하지 않습니다.
따라서이 같은 예를 들어 뭔가
MySum = MyTable.Where(x => x.SomeCondtion).Sum(x => x.AnIntegerValue);
가된다
MySum = MyTable.Where(x => x.SomeCondtion).Sum(x => (int?) x.AnIntegerValue);
행이 where 절과 일치하지 않는 경우 두 번째는 0으로 돌아갑니다. (행이 일치하지 않을 때 상기 제 한 예외가 발생).
-
==============================
4.외모는 유형이 부울이므로 null이 될 수 없다 기본적으로 거짓이어야한다 좋아한다.
외모는 유형이 부울이므로 null이 될 수 없다 기본적으로 거짓이어야한다 좋아한다.
from https://stackoverflow.com/questions/413084/equivalent-of-sql-isnull-in-linq by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #을 사용 데이터베이스에 이미지를 저장하는 방법 [마감] (0) | 2020.04.08 |
---|---|
[SQL] 엔티티 프레임 워크 오류 : 테이블의 ID 열에 대한 명시 적 값을 삽입 할 수 없습니다 (0) | 2020.04.08 |
[SQL] 정규식 널 (null)을 허용 목록에서 n 번째 값을 선택합니다 (0) | 2020.04.08 |
[SQL] PostgreSQL의 날짜 범위를 중복 찾기 (0) | 2020.04.08 |
[SQL] 2008 SQL Server의 SS : 00 : MM : 어떻게 HH의 정수 (시간)을 변환하는? (0) | 2020.04.08 |