2016-11-12 59 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分钟前发布的答案 –