Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.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# 林氏;动态查询或如何获取";“未知”;列数?_C#_Linq - Fatal编程技术网

C# 林氏;动态查询或如何获取";“未知”;列数?

C# 林氏;动态查询或如何获取";“未知”;列数?,c#,linq,C#,Linq,我有一个包含40(int)列的表,我需要根据用户输入获取某些列,有时可能是1,有时可能是全部40,如何使用LINQ实现这一点?使用动态LINQ库 它有多少行?可能更简单的方法是总是获取所有40列,然后忽略不需要的值。如果这会导致性能问题,则可以使用Select扩展来选择所需的列: IQueryable<MyResult> myResult; if (wantColumnFoo) { myResult = table.Select(x => new MyResult {

我有一个包含40(int)列的表,我需要根据用户输入获取某些列,有时可能是1,有时可能是全部40,如何使用LINQ实现这一点?

使用动态LINQ


它有多少行?可能更简单的方法是总是获取所有40列,然后忽略不需要的值。如果这会导致性能问题,则可以使用Select扩展来选择所需的列:

IQueryable<MyResult> myResult;
if (wantColumnFoo) {
    myResult = table.Select(x => new MyResult { x.Id, Foo = x.Foo });
} else {
    myResult = table.Select(x => new MyResult { x.Id, Foo = null });
}
IQueryable myResult;
if(wantColumnFoo){
myResult=table.Select(x=>newmyresult{x.Id,Foo=x.Foo});
}否则{
myResult=table.Select(x=>newmyresult{x.Id,Foo=null});
}

但是,如果您需要像这样处理所有40列,那么很快就会有很多工作要做。

这不是一个好主意,返回您不需要的数据,然后必须对其进行后期查询处理……我想您误解了。第一个示例返回了太多的数据,但没有进行任何处理—只需忽略不需要的字段。第二个例子没有带回太多的数据。查询由Linq自动优化。