IQueryable.Concat, IEnumerable.Concat, Linq GroupBy then OrderBy within each groupReturning IEnumerable<T> vs. IQueryable<T>LINQ query on a DataTableDynamic LINQ OrderBy on IEnumerable<T> / IQueryable<T>LINQ equivalent of foreach for IEnumerable<T>Multiple “order by” in LINQGroup By Multiple ColumnsWhen to use .First and when to use .FirstOrDefault with LINQ?What is the Java equivalent for LINQ?LINQ Orderby Descending QueryLINQ Aggregate algorithm explainedGroup by in LINQ

How did Arya survive the stabbing?

Failed to fetch jessie backports repository

What is the difference between "behavior" and "behaviour"?

Method to test if a number is a perfect power?

Implement the Thanos sorting algorithm

Trouble understanding the speech of overseas colleagues

Do sorcerers' Subtle Spells require a skill check to be unseen?

Integer addition + constant, is it a group?

How do we know the LHC results are robust?

What does the word "Atten" mean?

Short story about space worker geeks who zone out by 'listening' to radiation from stars

Pole-zeros of a real-valued causal FIR system

CREATE opcode: what does it really do?

Risk of infection at the gym?

How does buying out courses with grant money work?

Roman Numeral Treatment of Suspensions

India just shot down a satellite from the ground. At what altitude range is the resulting debris field?

Why Were Madagascar and New Zealand Discovered So Late?

Is a stroke of luck acceptable after a series of unfavorable events?

What happens if you roll doubles 3 times then land on "Go to jail?"

Sequence of Tenses: Translating the subjunctive

Why didn't Theresa May consult with Parliament before negotiating a deal with the EU?

Crossing the line between justified force and brutality

Why not increase contact surface when reentering the atmosphere?



IQueryable.Concat, IEnumerable.Concat, Linq GroupBy then OrderBy within each group


Returning IEnumerable<T> vs. IQueryable<T>LINQ query on a DataTableDynamic LINQ OrderBy on IEnumerable<T> / IQueryable<T>LINQ equivalent of foreach for IEnumerable<T>Multiple “order by” in LINQGroup By Multiple ColumnsWhen to use .First and when to use .FirstOrDefault with LINQ?What is the Java equivalent for LINQ?LINQ Orderby Descending QueryLINQ Aggregate algorithm explainedGroup by in LINQ













0















What I'm doing so far is this:



Entities:



public class BaseEntity

public int Id get; set;

public DateTime CreateOn get; set;


public class Request : BaseEntity, IAggregateRoot

public Approval Approval get; set;


public class Approval // Value object

public bool? IsApproved get; set;



Repo:



public async Task<IReadOnlyList<Request>> GetAllAsync()

IQueryable<Request> requests = await _dbContext.Requests.ToListAsync();
IQueryable<Request> pending = requests.Where(r => r.Approval.IsApproved == null).OrderBy(r => r.CreateOn);
IQueryable<Request> processed = requests.Where(r => r.Approval.IsApproved != null).OrderByDescending(r => r.CreateOn);

return pending.Concat(processed).ToListAsync();



The problem I have is when I iterate through the result of GetAllAsync and IsApproved has a value, Approval is set to null. If I only return requests without concatenating, it works as expected (the object is created, but the values within are null).



I suspect the problem is with concatenating two queries. How can I rewrite what I have in a single query?



The requests should be grouped by processed and not processed (IsApproved == null and IsApproved != null), then ordered by CreatedOn in different orders.



Would also greatly appreciate if someone can explain to me why after concatenating, Approval is set to null if IsApproved has a value. Also, when I wait enough (~5s), while debugging through each iteration, it works as expected. Maybe there's a late reference that doesn't await for some process to finish?



While writing this post, I did some testing. If I change IQueryable to IEnumerable it works as expected. After some more digging, I found this:




Queryable.Concat(IQueryable, IEnumerable) Method



Enumerable.Concat(IEnumerable, IEnumerable) Method




So I assume if I pass an IQueryable, instead of IEnumerable, to Queryable.Concat(), then I lose some references? I'm so confused.










share|improve this question

















  • 1





    Shouldn't requests be of type IList<Request>? Then pending and processed would be IEnumerable<Request> and the last line would be ToList() instead of ToListAsync().

    – ckuri
    Mar 21 at 16:04












  • Have you tried to make your pending and processed into a List using .ToList() and then doing pending.Concat(processed).ToList, to make sure there is nothing else going on

    – Vikhram
    Mar 21 at 16:23











  • Wouldn't that have an impact on performance? Somewhere else in the code I'm doing another .Where(...) so it would be something like Where(...).ToList().Where(...).

    – itVico
    Mar 22 at 8:16











  • As per this answer (stackoverflow.com/a/2876655/2949081), I want to do LINQ-to-SQL.

    – itVico
    Mar 22 at 8:23















0















What I'm doing so far is this:



Entities:



public class BaseEntity

public int Id get; set;

public DateTime CreateOn get; set;


public class Request : BaseEntity, IAggregateRoot

public Approval Approval get; set;


public class Approval // Value object

public bool? IsApproved get; set;



Repo:



public async Task<IReadOnlyList<Request>> GetAllAsync()

IQueryable<Request> requests = await _dbContext.Requests.ToListAsync();
IQueryable<Request> pending = requests.Where(r => r.Approval.IsApproved == null).OrderBy(r => r.CreateOn);
IQueryable<Request> processed = requests.Where(r => r.Approval.IsApproved != null).OrderByDescending(r => r.CreateOn);

return pending.Concat(processed).ToListAsync();



The problem I have is when I iterate through the result of GetAllAsync and IsApproved has a value, Approval is set to null. If I only return requests without concatenating, it works as expected (the object is created, but the values within are null).



I suspect the problem is with concatenating two queries. How can I rewrite what I have in a single query?



The requests should be grouped by processed and not processed (IsApproved == null and IsApproved != null), then ordered by CreatedOn in different orders.



Would also greatly appreciate if someone can explain to me why after concatenating, Approval is set to null if IsApproved has a value. Also, when I wait enough (~5s), while debugging through each iteration, it works as expected. Maybe there's a late reference that doesn't await for some process to finish?



While writing this post, I did some testing. If I change IQueryable to IEnumerable it works as expected. After some more digging, I found this:




Queryable.Concat(IQueryable, IEnumerable) Method



Enumerable.Concat(IEnumerable, IEnumerable) Method




So I assume if I pass an IQueryable, instead of IEnumerable, to Queryable.Concat(), then I lose some references? I'm so confused.










share|improve this question

















  • 1





    Shouldn't requests be of type IList<Request>? Then pending and processed would be IEnumerable<Request> and the last line would be ToList() instead of ToListAsync().

    – ckuri
    Mar 21 at 16:04












  • Have you tried to make your pending and processed into a List using .ToList() and then doing pending.Concat(processed).ToList, to make sure there is nothing else going on

    – Vikhram
    Mar 21 at 16:23











  • Wouldn't that have an impact on performance? Somewhere else in the code I'm doing another .Where(...) so it would be something like Where(...).ToList().Where(...).

    – itVico
    Mar 22 at 8:16











  • As per this answer (stackoverflow.com/a/2876655/2949081), I want to do LINQ-to-SQL.

    – itVico
    Mar 22 at 8:23













0












0








0








What I'm doing so far is this:



Entities:



public class BaseEntity

public int Id get; set;

public DateTime CreateOn get; set;


public class Request : BaseEntity, IAggregateRoot

public Approval Approval get; set;


public class Approval // Value object

public bool? IsApproved get; set;



Repo:



public async Task<IReadOnlyList<Request>> GetAllAsync()

IQueryable<Request> requests = await _dbContext.Requests.ToListAsync();
IQueryable<Request> pending = requests.Where(r => r.Approval.IsApproved == null).OrderBy(r => r.CreateOn);
IQueryable<Request> processed = requests.Where(r => r.Approval.IsApproved != null).OrderByDescending(r => r.CreateOn);

return pending.Concat(processed).ToListAsync();



The problem I have is when I iterate through the result of GetAllAsync and IsApproved has a value, Approval is set to null. If I only return requests without concatenating, it works as expected (the object is created, but the values within are null).



I suspect the problem is with concatenating two queries. How can I rewrite what I have in a single query?



The requests should be grouped by processed and not processed (IsApproved == null and IsApproved != null), then ordered by CreatedOn in different orders.



Would also greatly appreciate if someone can explain to me why after concatenating, Approval is set to null if IsApproved has a value. Also, when I wait enough (~5s), while debugging through each iteration, it works as expected. Maybe there's a late reference that doesn't await for some process to finish?



While writing this post, I did some testing. If I change IQueryable to IEnumerable it works as expected. After some more digging, I found this:




Queryable.Concat(IQueryable, IEnumerable) Method



Enumerable.Concat(IEnumerable, IEnumerable) Method




So I assume if I pass an IQueryable, instead of IEnumerable, to Queryable.Concat(), then I lose some references? I'm so confused.










share|improve this question














What I'm doing so far is this:



Entities:



public class BaseEntity

public int Id get; set;

public DateTime CreateOn get; set;


public class Request : BaseEntity, IAggregateRoot

public Approval Approval get; set;


public class Approval // Value object

public bool? IsApproved get; set;



Repo:



public async Task<IReadOnlyList<Request>> GetAllAsync()

IQueryable<Request> requests = await _dbContext.Requests.ToListAsync();
IQueryable<Request> pending = requests.Where(r => r.Approval.IsApproved == null).OrderBy(r => r.CreateOn);
IQueryable<Request> processed = requests.Where(r => r.Approval.IsApproved != null).OrderByDescending(r => r.CreateOn);

return pending.Concat(processed).ToListAsync();



The problem I have is when I iterate through the result of GetAllAsync and IsApproved has a value, Approval is set to null. If I only return requests without concatenating, it works as expected (the object is created, but the values within are null).



I suspect the problem is with concatenating two queries. How can I rewrite what I have in a single query?



The requests should be grouped by processed and not processed (IsApproved == null and IsApproved != null), then ordered by CreatedOn in different orders.



Would also greatly appreciate if someone can explain to me why after concatenating, Approval is set to null if IsApproved has a value. Also, when I wait enough (~5s), while debugging through each iteration, it works as expected. Maybe there's a late reference that doesn't await for some process to finish?



While writing this post, I did some testing. If I change IQueryable to IEnumerable it works as expected. After some more digging, I found this:




Queryable.Concat(IQueryable, IEnumerable) Method



Enumerable.Concat(IEnumerable, IEnumerable) Method




So I assume if I pass an IQueryable, instead of IEnumerable, to Queryable.Concat(), then I lose some references? I'm so confused.







c# linq .net-core ienumerable iqueryable






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 21 at 15:59









itVicoitVico

1071311




1071311







  • 1





    Shouldn't requests be of type IList<Request>? Then pending and processed would be IEnumerable<Request> and the last line would be ToList() instead of ToListAsync().

    – ckuri
    Mar 21 at 16:04












  • Have you tried to make your pending and processed into a List using .ToList() and then doing pending.Concat(processed).ToList, to make sure there is nothing else going on

    – Vikhram
    Mar 21 at 16:23











  • Wouldn't that have an impact on performance? Somewhere else in the code I'm doing another .Where(...) so it would be something like Where(...).ToList().Where(...).

    – itVico
    Mar 22 at 8:16











  • As per this answer (stackoverflow.com/a/2876655/2949081), I want to do LINQ-to-SQL.

    – itVico
    Mar 22 at 8:23












  • 1





    Shouldn't requests be of type IList<Request>? Then pending and processed would be IEnumerable<Request> and the last line would be ToList() instead of ToListAsync().

    – ckuri
    Mar 21 at 16:04












  • Have you tried to make your pending and processed into a List using .ToList() and then doing pending.Concat(processed).ToList, to make sure there is nothing else going on

    – Vikhram
    Mar 21 at 16:23











  • Wouldn't that have an impact on performance? Somewhere else in the code I'm doing another .Where(...) so it would be something like Where(...).ToList().Where(...).

    – itVico
    Mar 22 at 8:16











  • As per this answer (stackoverflow.com/a/2876655/2949081), I want to do LINQ-to-SQL.

    – itVico
    Mar 22 at 8:23







1




1





Shouldn't requests be of type IList<Request>? Then pending and processed would be IEnumerable<Request> and the last line would be ToList() instead of ToListAsync().

– ckuri
Mar 21 at 16:04






Shouldn't requests be of type IList<Request>? Then pending and processed would be IEnumerable<Request> and the last line would be ToList() instead of ToListAsync().

– ckuri
Mar 21 at 16:04














Have you tried to make your pending and processed into a List using .ToList() and then doing pending.Concat(processed).ToList, to make sure there is nothing else going on

– Vikhram
Mar 21 at 16:23





Have you tried to make your pending and processed into a List using .ToList() and then doing pending.Concat(processed).ToList, to make sure there is nothing else going on

– Vikhram
Mar 21 at 16:23













Wouldn't that have an impact on performance? Somewhere else in the code I'm doing another .Where(...) so it would be something like Where(...).ToList().Where(...).

– itVico
Mar 22 at 8:16





Wouldn't that have an impact on performance? Somewhere else in the code I'm doing another .Where(...) so it would be something like Where(...).ToList().Where(...).

– itVico
Mar 22 at 8:16













As per this answer (stackoverflow.com/a/2876655/2949081), I want to do LINQ-to-SQL.

– itVico
Mar 22 at 8:23





As per this answer (stackoverflow.com/a/2876655/2949081), I want to do LINQ-to-SQL.

– itVico
Mar 22 at 8:23












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55284556%2fiqueryable-concat-ienumerable-concat-linq-groupby-then-orderby-within-each-gro%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid …


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55284556%2fiqueryable-concat-ienumerable-concat-linq-groupby-then-orderby-within-each-gro%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해

Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?