하나의 항목을 선택하는 Linq 코드
일치하는 항목을 하나 선택하기 위해 이와 같은 코드를 많이 작성하고 있습니다.
var item = (from x in Items where x.Id == 123 select x).First();
더 귀하의 방법이 있습니까?
편집 : "linq 구문을 사용하는 더 검색 방법"이라고 말해야합니다. 나는 이미 람다 구문을 실제적으로 실제로 인 것처럼 보이기 시작했습니다. 그래도 유용한 정보를 얻었 답장 한 모든 사람에게 감사드립니다.
linq 쿼리 구문이 얼마나 마음에 따라 지에 따라 다음과 같은 확장 메소드를 직접 사용할 수 있습니다.
var item = Items.First(i => i.Id == 123);
목록이 비어있는 경우 오류가 발생하지 않도록 FirstOrDefault
발생하는 요소 유형 ( null
참조 유형의 경우)에 대한 언급을 반환하는 값을 사용하세요 .
var item = Items.FirstOrDefault(i => i.Id == 123);
if (item != null)
{
// found it
}
Single()
그리고 SingleOrDefault()
도 사용할 수 있습니다. 고유 한 존재 여부를 보장 할 수 있습니다. First()
그리고 FirstOrDefault()
첫 경기에 중지합니다.
First()
및 Single()
가족 중 그들이 던지는 곳 은 다음 과 같습니다 .
First()
-비어 경우에도 그렇습니다.FirstOrDefault()
-비어 경우에도 사용할 수없는 경우 경우를 반환하고 두 번 던졌습니다.Single()
-비어 있거나 수 있고 던지고, 이럴 경우 던지고.SingleOrDefault()
-비어 카드에있을 수없는 경우에 전화를 받고 있으면 좋습니다.
시나리오 및 0 개 이상의 일치 항목을 처리할지 여부에 따라 FirstOrDefault 또는 SingleOrDefault 가 유용 할 수 있습니다.
FirstOrDefault : 시퀀스의 첫 번째 요소를 반환하거나 요소가없는 경우 반환합니다.
SingleOrDefault : 시퀀스의 유일한 요소 또는 시퀀스가 비어있는 경우를 반환합니다. 이 메서드는 시퀀스에 둘 이상의 요소가있는 경우 예외를 throw합니다.
나는 그것이 어떻게 작동하는지 모르지만 람다 구문에서는 다음과 같이 시청합니다.
var item1 = Items.FirstOrDefault(x => x.Id == 123);
var item2 = Items.SingleOrDefault(x => x.Id == 123);
다음은 선호되는 방법입니다.
var item = Items.SingleOrDefault(x => x.Id == 123);
또는
var item = Items.Single(x => x.Id == 123);
누군가의 삶을 더 쉽게 만들기 위해 람다 용도를 linq 쿼리
(from x in Items where x.Id == 123 select x).FirstOrDefault();
그 안에가있는 SQL 쿼리가 발생 select top (1)
합니다.
그것은 이것으로 더 잘 압축 될 수 있습니다.
var item = Items.First(x => x.Id == 123);
귀하의 쿼리는 현재 열거 형 내 에서 모든 결과를 수집하고 (하나 이상있을 수 있음) 해당 집합 에서 첫-th 결과를 가져와 필요한을 구석으로보다 더 많은 작업을 수행합니다.
Single / Single 또는 Default는 가치가 전체 컬렉션을 반복하고 해당 일치를 선택하는 것 외에도 일치가 고유한지 확인하려는 경우에만 해당됩니다. First / FirstOrDefault는 얼마나 많은이 항목이 있는지에 관계없이 첫 번째 일치 항목을 선택하고 종료합니다.
확장 메서드 구문을 사용할 수 있습니다.
var item = Items.Select(x => x.Id == 123).FirstOrDefault();
그 외에는 자신만의 특별한 "First"및 "FirstOrDefault"확장 방법을 작성하지 얼마나 더 간결하게 할 수 있는지 잘 모르겠습니다.
무엇이 저에게 말씀했는지 말씀하셨습니다.
int id = int.Parse(insertItem.OwnerTableView.DataKeyValues[insertItem.ItemIndex]["id_usuario"].ToString());
var query = user.First(x => x.id_usuario == id);
tbUsername.Text = query.username;
tbEmail.Text = query.email;
tbPassword.Text = query.password;
내 ID는 쿼리하려는 행입니다.이 경우 radGrid에서 다음 쿼리에 사용했지만 쿼리는 행을 반환 한 다음 쿼리에서 얻은 값을 텍스트 상자 또는 기타 항목에 할당 할 수 있습니다. , 나는 전도를 텍스트 상자에 할당해야했습니다.
참고 URL : https://stackoverflow.com/questions/7809745/linq-code-to-select-one-item
'IT' 카테고리의 다른 글
Ruby에서 모든 메소드를 메소드하는 방법은 무엇입니까? (0) | 2020.08.20 |
---|---|
NUnit으로 개인 방법을 어떻게 테스트합니까? (0) | 2020.08.20 |
객체 키에 공백이 JavaScript 객체에 어떻게 액세스 할 수있는 있습니까? (0) | 2020.08.20 |
Decimal. Divide (int, int)는 작동하지만 (int / int) 작동하지 않는 이유는 무엇입니까? (0) | 2020.08.20 |
ravel () 함수를 사용하기위한 목록에서 배열로 변환 (0) | 2020.08.20 |