C# LINQ:不支持将var作为方法参数传递

C# LINQ:不支持将var作为方法参数传递,c#,linq,C#,Linq,我想将以下查询封装到一个返回查询结果(即成员)的方法中 然后我想进行另一个查询,该查询将查询返回的结果 我了解到我不能在我想要创建的方法中使用var作为参数类型或结果类型。我真的很想得到这种支持,让我的生活变得简单 其他详情: MembersItemsControl.Items属性具有类型为“Users”的私有成员“\u ItemsSourceList”,该成员是从ObservableCollection继承的类 有什么建议吗 查询代码如下: 您始终可以将LINQ集合作为IEnumerable传

我想将以下查询封装到一个返回查询结果(即成员)的方法中

然后我想进行另一个查询,该查询将查询返回的结果

我了解到我不能在我想要创建的方法中使用var作为参数类型或结果类型。我真的很想得到这种支持,让我的生活变得简单

其他详情: MembersItemsControl.Items属性具有类型为“Users”的私有成员“\u ItemsSourceList”,该成员是从ObservableCollection继承的类

有什么建议吗

查询代码如下:


您始终可以将LINQ集合作为IEnumerable传递


其中Member是membersitemcontrol.items中的项目类型。

您的意思是希望我能够转到var members=GetQuery

您可以将结果视为IEnumerable:


您只需要显式地键入变量成员,以允许隐式地键入局部变量。如果您必须传递变量,或在本地范围外返回变量,则必须使用显式类型的变量-您可以通过鼠标悬停在变量上或使用调试器查看变量来确定变量的类型-它将告诉您必须使用的完整类型。

我真的不明白。您是否试图将匿名类型作为参数/返回类型传递?MembersItemsControl.Items的类型是什么?为了澄清,成员的类型是IEnumerable,因此您可以将成员传递给IEnumerable类型的参数。返回IEnumerable是非常无用的。您需要使用IEnumerable的通用实现IEnumerable for LINQ才能使用它做任何有用的事情。我不久前从这段代码开始,找到了一种更好的方法来做不需要这个问题的事情。然而,我确实喜欢提议的解决方案。
var members = (from member in MembersItemsControl.Items
               where
               (
                   // Match either male or female selection
                   (member as UserInformation).sex.Equals("Male") == 
                       SeekingMale.IsChecked.Value &&
                   (member as UserInformation).sex.Equals("Female") == 
                       SeekingFemale.IsChecked.Value
               )
               ||
               (
                    // Provide both male and female if both options are selected
                    SeekingMale.IsChecked.Value == true &&
                    SeekingFemale.IsChecked.Value == true
               )
               select member);
public IEnumarable<Member> Foo()
{
    var members = (from member in MembersItemsControl.Items
                   where
                   (
                       // Match either male or female selection
                       (member as UserInformation).sex.Equals("Male") == 
                           SeekingMale.IsChecked.Value &&
                       (member as UserInformation).sex.Equals("Female") == 
                           SeekingFemale.IsChecked.Value
                   )
                   ||
                   (
                        // Provide both male and female if both options are selected
                        SeekingMale.IsChecked.Value == true &&
                        SeekingFemale.IsChecked.Value == true
                   )
                   select member);

    return members;
}
private IEnumerable<Member> GetMemberQuery()
{
    var members = (from member in MembersItemsControl.Items
                   where
                   (
                       // Match either male or female selection
                       (member as UserInformation).sex.Equals("Male") == 
                           SeekingMale.IsChecked.Value &&
                       (member as UserInformation).sex.Equals("Female") == 
                           SeekingFemale.IsChecked.Value
                   )
                   ||
                   (
                       // Provide both male and female if both options are selected
                       SeekingMale.IsChecked.Value == true &&
                       SeekingFemale.IsChecked.Value == true
                   )
                   select member);

    return members;
}
var otherQuery = GetMemberQuery().Where(x=> x.Name == "Bob");