메서드에 람다 식을 통해 필드를 전달한 다음 해당 필드를 linq 쿼리의 일부로 사용할 수 있습니까?C# lambda 표현 필드를 메서드에 전달하고 linq 쿼리의 필드를 사용합니다.
나는 내가 방법을 작성하는 방법을 모르겠어요
IDictionary<string, string> stuff = foo(items, otherItems, otherItems => otherItems.FieldToUse)
같은 방법 뭔가를 호출하고 싶지만, 나는 아래의 코드와 같은 종류의를 사용하고자하는 것입니다. 제네릭을 사용할 수 있고 필드 이름 (문자열을 통해)을 메소드에 전달할 수 있지만 다음과 같이 linq 쿼리에서 어떻게 사용할지 모릅니다. 또한 나는 람다 (lambda)를 사용하는 것을 좋아한다. 왜냐하면 내가 선택할 때마다 필드의 이름을 바꿀 수 있기 때문이다.
private IDictionary<string, string> foo<TModel>(IEnumerable<string> items, IEnumerable<TModel> otherItems, object FieldToUse)
{
//this will return a list of key value pairs of rowIDs and equipment
IDictionary<string, string> x = (from o in otherItems
join i in items on o.FieldToUse.ToString() equals i //joining on the equipment assetcode
select new { rowID = o.RowID, item = i }).ToDictionary(k => k.rowID.ToString(), v => v.item);
return x;
}
명확화 : FieldToUse은의 tModel의 속성이나 필드
질문은 매우 명확하지 않다된다. FieldsToUse는 다른 항목의 유형입니까? otherItem을 전달할 때 필드를 전달할 필요가 없습니다. –
TModel에 동일한 유형을 사용하고 있어도 동일한 속성을 사용하여 메소드를 항상 호출하고 싶지는 않습니다. 때로는 하나의 속성과 때로는 다른 속성을 사용하려고합니다. – TruthOf42
선택기를 사용하고 싶습니다. 예를 들어 LINQ OrderBy 메서드를 호출하면 .OrderBy (obj => obj.Property); 그게 니가 찾고있는거야? – mbrdev