2016-11-12 18 views
0

どうすれば避けることができますか?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

where句をLINQあなたに||を使用してください。また、あなたは一度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

これは正解ですが、回答と同じようです –

関連する問題