Ответ 1
Я предполагаю, что это означает, используйте перегрузку Single
, которая берет предикат вместо использования Where
и Single
вместе:
var user = db.Users.Single(u => u.UserID == userID);
При использовании LINQ с Single() я всегда получаю свою строку кода, подчеркнутую зеленым цветом, с предложением "Заменить одним вызовом на одиночный". Что это значит? Вот пример строки кода, которая приводит к этому предложению:
var user = db.Users.Where(u => u.UserID == userID).Single();
Как вы можете видеть, я использую Single() только один раз. Итак... какая сделка?
Я предполагаю, что это означает, используйте перегрузку Single
, которая берет предикат вместо использования Where
и Single
вместе:
var user = db.Users.Single(u => u.UserID == userID);
var user = db.Users.Single(u => u.UserID == userID)
Синтаксический сахар
Букет выражений Linq, Перечислимые методы, работайте таким образом, как метод Single, который принимает предикат и возвращает true, только если условие выполнено (тест прошел), в противном случае - false.
Они должны использоваться вместо элементов Where() и Single() вместе:
var user = db.Users.Single(u => u.UserID == userID);
// Checks for if there is one and, only one element that satisfy the condition.
и
var user = db.Users.Any(u => u.UserID == userID);
// Checks for if there are any elements that satisfy the condition.
и
var user = db.Users.All(u => u.UserID == userID);
// Checks if all elements satisfy the condition.
Выберите *, из которого в Linq Lambda можно ввести поле в (список, из поля), используя два подхода
Пример кода здесь в DotNetFiddle
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
//Initializing a collection of 4 Employees fromthree Different departments <Name of Employee, Dept ID>
List<KeyValuePair<string, int>> EmployeeDept = new List<KeyValuePair<string, int>> {
new KeyValuePair<string, int> ("Gates",2),
new KeyValuePair<string, int> ("Nadella",2),
new KeyValuePair<string, int> ("Mark",3),
new KeyValuePair<string, int> ("Pichai",4)
};
//Filter the Employees belongs to these department
int[] deptToFilter ={3,4};
//Approach 1 - Using COntains Method
Console.WriteLine ("Approach 1 - Using Contains");
Console.WriteLine ("==========================================");
var filterdByContains = EmployeeDept.Where(emp => deptToFilter.Contains(emp.Value));
foreach (var dept3and4employees in filterdByContains)
{
Console.WriteLine(dept3and4employees.Key+" - "+dept3and4employees.Value);
}
//Approach 2 Using Join
Console.WriteLine ("\n\nApproach 2 - Using Join");
Console.WriteLine ("==========================================");
var filteredByJoin = EmployeeDept.Join(
deptToFilter,
empdept => empdept.Value,
filterdept => filterdept,
(empdep,filddep) => new KeyValuePair<string, int>(empdep.Key, empdep.Value)
);
foreach (var dept3and4employees in filteredByJoin)
{
Console.WriteLine(dept3and4employees.Key+" - "+dept3and4employees.Value);
}
}
}