C# 是否在函数外部发送select参数?
我正在尝试从外部向函数发送两个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
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(选择器);}@ilkerunaldata
不应是新列表。我假设您有可用的数据上下文,所以它应该类似于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();
}