Я немного упрощаю, я удалил только один переключатель, но удалить два невозможно, возможно, вы используете это:
public static SearchModel GetSearchResults(SearchModel model)
{
List<ResultModel> results = new List<ResultModel>();
SqlCommand cmd = new SqlCommand(); // only for compile for finnaly dispose
try
{
using (SqlConnection conn = new SqlConnection("connection string"))
{
conn.Open();
string sqlCommand = string.Empty;
switch (model.Attribute)
{
case "Users":
cmd = AdoBase.GetSqlCommand("GeneralUserSearch", conn);
if (!string.IsNullOrWhiteSpace(model.Name)) {
cmd.Parameters.AddWithValue("Name", model.Name);
}
if (!string.IsNullOrWhiteSpace(model.Name)) { // redundant if or mistake, and there should be model.Username
cmd.Parameters.AddWithValue("Username", model.Username);
}
break;
case "Favorites":
cmd = AdoBase.GetSqlCommand("UserFavorites", conn);
cmd.Parameters.AddWithValue("Favorites", model.Favorites);
break;
case "Email":
cmd = AdoBase.GetSqlCommand("EmailSearch", conn);
cmd.Parameters.AddWithValue("Email", model.Email);
break;
}
SimpleMethod(results, cmd, model);
}
}
catch (Exception ex)
{
return ex;
}
finally
{
cmd.Dispose();
}
return model;
}
SimpleMethod:
public static void SimpleMethod(List<ResultModel> results, SqlCommand cmd, SearchModel model)
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
ResultModel result = new ResultModel();
switch (model.Attribute)
{
case "Users":
result.Users.Add(reader["User"]);
break;
case "Favorites":
result.User = reader["User"];
result.Favorites = reader["Favorites"];
break;
case "Email":
result.User = reader["User"];
result.Email = reader["Email"];
break;
}
results.Add(result);
}
}
}
}
#light
open System
open System.Xml.Linq
let xname s = XName.Get(s)
let bookmarks (xmlFile : string) =
let xd = XDocument.Load xmlFile
xd.Descendants <| xname "bookmark"
Это найдет все порожденные элементы "закладки". Если Вы только хотите прямых потомков, используйте метод Элементов (xd. Корень. Элементы <| xname "безотносительно").
Протест: я никогда не делал linq-to-xml прежде, но просмотр других сообщений по теме, этот отрывок имеет некоторый код F#, который компилирует и делает что-то, и таким образом это может помочь Вам начать:
open System.IO
open System.Xml
open System.Xml.Linq
let xmlStr = @"<?xml version='1.0' encoding='UTF-8'?>
<doc>
<blah>Blah</blah>
<a href='urn:foo' />
<yadda>
<blah>Blah</blah>
<a href='urn:bar' />
</yadda>
</doc>"
let xns = XNamespace.op_Implicit ""
let a = xns + "a"
let reader = new StringReader(xmlStr)
let xdoc = XDocument.Load(reader)
let aElements = [for x in xdoc.Root.Elements() do
if x.Name = a then
yield x]
let href = xns + "href"
aElements |> List.iter (fun e -> printfn "%A" (e.Attribute(href)))