Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否在函数外部发送select参数?_C#_Entity Framework_Linq - Fatal编程技术网

C# 是否在函数外部发送select参数?

C# 是否在函数外部发送select参数?,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在尝试从外部向函数发送两个select参数。我试图实现的目标简化如下 我有一个这样的模型 public class Entity { public int Id { get; set; } public string Name { get; set; } public string Surname { get; set; } } SampleData: 3 / Barrack / Obama 4 / Vladimir / Putin 还有另一个模型 public

我正在尝试从外部向函数发送两个select参数。我试图实现的目标简化如下

我有一个这样的模型

public class Entity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
}

SampleData:
3 / Barrack / Obama
4 / Vladimir / Putin
还有另一个模型

public class IdTextModel
{
    public string Id { get; set; }
    public string Text { get; set; }
}
我试图创建一个这样的函数

public List<IdNameModel> GetList(propselectorA, propselectorB){
    return data.Select(x => new IdTextModel(){
        Id = propselectorA,
        Text = propselectorB
    });
}

我怎样才能做到这一点?谢谢。

您可以使用
表达式
提取
Id
文本的类型

public List<T> GetList(
    Expression<Func<Entity,T>> selector
) {
    return data.Select(selector).ToList();
}
也可以为两个字符串属性传递选择器,但使用
Zip
会降低效率:

public List<IdTextModel> GetList(
    Expression<Func<Entity,string>> selectorId
,   Expression<Func<Entity,string>> selectorName
) {
    return data
       .Select(selectorId)
       .Zip(
           data.Select(selectorName)
       ,   (id, name) => new IdTextModel { Id = id, Name = name }
       ).ToList();
}
公共列表GetList(
表达式选择器ID
,表达式selectorName
) {
返回数据
.选择(selectorId)
Zip先生(
数据。选择(selectorName)
,(id,name)=>新的IdTextModel{id=id,name=name}
).ToList();
}

我相信您要找的类型是
表达式
谢谢您的快速回答。public List GetList(表达式选择器){var data=new List();返回data.Select(选择器);}@ilkerunal
data
不应是新列表。我假设您有可用的数据上下文,所以它应该类似于
dataContext.EntityTable.Select(selector.ToList()
var list = GetList(x => IdTextModel { Id = x.Id, Name = x.Surname } );
public List<IdTextModel> GetList(
    Expression<Func<Entity,string>> selectorId
,   Expression<Func<Entity,string>> selectorName
) {
    return data
       .Select(selectorId)
       .Zip(
           data.Select(selectorName)
       ,   (id, name) => new IdTextModel { Id = id, Name = name }
       ).ToList();
}