2016-11-12 65 views
0

我該如何避免如果條件爲這種情況,如果userid爲零?C# - 如果條件在Linq選擇查詢與where子句

if (Userid == 0) 
{ 
    var logList = service.GetLogDetails(); 
    var usernames = (from A in logList orderby A.FirstName select new { Name = A.FirstName + " " + A.SurName, ID = A.Id }).Distinct(); 
    var loginDate = (from A in logList select A.LogInTime.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)).Distinct(); 
    var logOutDate = (from A in logList select (A.LogOutTime ?? "Unknown").ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)).Distinct(); 
} 
else 
{ 
    var logList = service.GetLogDetails(); 
    var usernames = (from A in logList where A.Id == Userid orderby A.FirstName select new { Name = A.FirstName + " " + A.SurName, ID = A.Id }).Distinct(); 
    var loginDate = (from A in logList where A.Id == Userid select A.LogInTime.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)).Distinct(); 
    var logOutDate = (from A in logList where A.Id == Userid select (A.LogOutTime ?? "Unknown").ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)).Distinct(); 
} 
+3

'那裏A.Id == ||用戶ID Userid == 0' – KMoussa

回答

3

在你LINQ where子句的||。您也可以通過查詢logList一次,然後將它在不同的投影提高:

var logList = service.GetLogDetails() 
        .Where(item => Userid == 0 || item.Id = Userid) 
        .ToList(); 

var usernames = (from A in logList 
       orderby A.FirstName 
       select new { Name = $"{A.FirstName} {A.SurName}", ID = A.Id }).Distinct(); 

var loginDate = (from A in logList 
       select A.LogInTime.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)).Distinct(); 

var logOutDate = (from A in logList 
        select (A.LogOutTime ?? "Unknown").ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)).Distinct(); 
+0

我寫過像你說的 var logList = service.GetLogDetails()。其中​​(item => item.Id == Userid || Userid == 0).ToList(); 現在它的工作。謝謝 – lashja

+1

@AbhilashJA - 歡迎您:) –

+2

@AbhilashJA如果他的回答對您有幫助,請將其標記爲正確。 – mybirthname

1

修改您的查詢,這樣

var usernames = (from A in logList where A.Id = UserId || UserId == 0 ... 
+2

雖然正確,這就像是4分鐘前發佈的答案 –