本文整理汇总了C#中IDocumentSession.Query方法的典型用法代码示例。如果您正苦于以下问题:C# IDocumentSession.Query方法的具体用法?C# IDocumentSession.Query怎么用?C# IDocumentSession.Query使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDocumentSession
的用法示例。
在下文中一共展示了IDocumentSession.Query方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateOrder
public static string CreateOrder(IDocumentSession session)
{
var random = new Random((int)(DateTime.Now.Ticks % Int32.MaxValue));
var products = session.Query<Product>().ToList();
var customers = session.Query<Customer>().ToList();
if (!customers.Any())
return "Init required";
var customer = customers.ElementAt(random.Next() % customers.Count());
var address = customer.Addresses.SingleOrDefault(a => a.Type == AddressOptions.Home)
?? customer.Addresses.First();
var order = new Order
{
Date = DateTime.Today,
Customer = customer.Name,
ShippingAddress = address.AddressDesc + ", " + address.Country + " " + address.PostalCode
};
for (var i = 0; i < random.Next(2, 4); i++)
{
order.OrderLines.Add(CreateOrderLine(products, random));
}
order.GrandTotal = order.OrderLines.Sum(l => l.Total);
session.Store(order);
return String.Empty;
}
示例2: string_fields
// ENDSAMPLE
// SAMPLE: searching_within_string_fields
public void string_fields(IDocumentSession session)
{
session.Query<Target>().Where(x => x.String.StartsWith("A"));
session.Query<Target>().Where(x => x.String.EndsWith("Suffix"));
session.Query<Target>().Where(x => x.String.Contains("something"));
}
示例3: ServersModule
public ServersModule(IDocumentSession session)
: base("/api/servers")
{
Get[""] = parameters =>
{
var statistics = new ClusterStatistics();
statistics.Servers = session.Query<ServerRecord>()
.OrderBy(record => record.Id)
.Take(1024)
.ToList();
statistics.Credentials = session.Query<ServerCredentials>()
.OrderByDescending(credentials => credentials.Id)
.Take(1024)
.ToList();
return statistics;
};
Delete["/{id}"] = parameters =>
{
var id = (string)parameters.id;
session.Advanced.DocumentStore.DatabaseCommands.Delete(id, null);
return true;
};
}
示例4: SearchModule
public SearchModule(IDocumentSession documentSession)
: base("/search")
{
Post["/GetMostPopularDinners"] = parameters =>
{
// Default the limit to 40, if not supplied.
if (!this.Request.Form.limit.HasValue || String.IsNullOrWhiteSpace(this.Request.Form.limit))
this.Request.Form.limit = 40;
var jsonDinners = documentSession.Query<JsonDinner, Dinners_Index>()
.Where(x => x.EventDate >= DateTime.Now.Date)
.Take((int)this.Request.Form.limit)
.OrderByDescending(x => x.RSVPCount)
.AsProjection<JsonDinner>()
.ToList();
return Response.AsJson(jsonDinners);
};
Post["/SearchByLocation"] = parameters =>
{
double latitude = (double)this.Request.Form.latitude;
double longitude = (double)this.Request.Form.longitude;
var dinners = documentSession.Query<Dinner, Dinners_Index>()
.Where(x => x.EventDate > DateTime.Now.Date)
.AsEnumerable()
.Where(x => DistanceBetween(x.Latitude, x.Longitude, latitude, longitude) < 1000).Select(x => JsonDinnerFromDinner(x));
return Response.AsJson(dinners.ToList());
};
}
示例5: and_or
// ENDSAMPLE
// SAMPLE: querying_with_and_or_or
public void and_or(IDocumentSession session)
{
// AND queries
session.Query<Target>().Where(x => x.Number > 0 && x.Number <= 5);
// OR queries
session.Query<Target>().Where(x => x.Number == 5 || x.Date == DateTime.Today);
}
示例6: case_insensitive_string_fields
// ENDSAMPLE
// SAMPLE: searching_within_case_insensitive_string_fields
public void case_insensitive_string_fields(IDocumentSession session)
{
session.Query<Target>().Where(x => x.String.StartsWith("A", StringComparison.OrdinalIgnoreCase));
session.Query<Target>().Where(x => x.String.EndsWith("SuFfiX", StringComparison.OrdinalIgnoreCase));
// using Marten.Util
session.Query<Target>().Where(x => x.String.Contains("soMeThiNg", StringComparison.OrdinalIgnoreCase));
}
示例7: GetAll
public static Merchant[] GetAll(IDocumentSession session, string[] keywords)
{
if (keywords == null || keywords.Length == 0)
return session.Query<Merchant>().ToArray();
return session.Query<Merchant>()
.Where(m => m.Keywords.Any(k => k.In(keywords)))
.ToArray();
}
示例8: Delete
public static void Delete(this Project project, IDocumentSession session)
{
session.Query<Activity>()
.Where(a => a.Project == project.Id).ToList().ForEach(a => a.Delete(session));
session.Query<Discussion>()
.Where(d => d.Entity == project.Id).ToList().ForEach(d => d.Delete(session));
session.Delete(project);
}
示例9: order_by
// ENDSAMPLE
// SAMPLE: ordering-in-linq
public void order_by(IDocumentSession session)
{
// Sort in ascending order
session.Query<Target>().OrderBy(x => x.Date);
// Sort in descending order
session.Query<Target>().OrderByDescending(x => x.Date);
// You can use multiple order by's
session.Query<Target>().OrderBy(x => x.Date).ThenBy(x => x.Number);
}
示例10: SearchModule
public SearchModule(IDocumentSession documentSession)
: base("/search")
{
Post["/GetMostPopularDinners"] = parameters =>
{
// Default the limit to 40, if not supplied.
if (!Request.Form.limit.HasValue || String.IsNullOrWhiteSpace(Request.Form.limit))
Request.Form.limit = 40;
//var jsonDinners = documentSession.Query<Dinner>()
// .Where(x => x.EventDate >= DateTime.Now.Date)
// .Take((int)this.Request.Form.limit)
// .OrderByDescending(x => x.RSVPCount)
// .AsProjection<JsonDinner>()
// .ToList();
// TODO: Not sure this will work
var jsonDinners = documentSession.Query<Dinner>()
.Where(x => x.EventDate >= DateTime.Now.Date)
.Take((int)Request.Form.limit)
.OrderByDescending(x => x.RSVPs.Count)
.Select(x => new JsonDinner
{
EventDate = x.EventDate,
Description = x.Description,
DinnerID = x.DinnerID,
Longitude = x.Longitude,
Latitude = x.Latitude,
Title = x.Title,
Url = x.DinnerID,
RSVPCount = x.RSVPs.Count
})
.ToList();
return Response.AsJson(jsonDinners);
};
Post["/SearchByLocation"] = parameters =>
{
var latitude = (double)Request.Form.latitude;
var longitude = (double)Request.Form.longitude;
var dinners = documentSession.Query<Dinner>()
.Where(x => x.EventDate > DateTime.Now.Date)
.AsEnumerable()
.Where(x => DistanceBetween(x.Latitude, x.Longitude, latitude, longitude) < 1000).Select(x => JsonDinnerFromDinner(x));
return Response.AsJson(dinners.ToList());
};
}
示例11: ResolvePath
public IPathData ResolvePath(string virtualUrl)
{
// Set the default action to index
_pathData.Action = ContentRoute.DefaultAction;
// Set the default controller to content
_pathData.Controller = ContentRoute.DefaultControllerName;
// Get an up to date document session from structuremap
_session = ObjectFactory.GetInstance<IDocumentSession>();
// The requested url is for the start page with no action
if (string.IsNullOrEmpty(virtualUrl) || string.Equals(virtualUrl,"/")) {
_pageModel = _session.Query<IPageModel>()
.Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
.SingleOrDefault(x => x.Parent == null);
_pathData.CurrentPageModel = _pageModel;
return _pathData;
}
// Remove the trailing slash
virtualUrl = VirtualPathUtility.RemoveTrailingSlash(virtualUrl);
// The normal beahaviour should be to load the page based on the url
_pageModel = _session.Query<IPageModel, Document_ByUrl>()
.Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
.FirstOrDefault(x => x.Metadata.Url == virtualUrl);
// Try to load the page without the last segment of the url and set the last segment as action))
if (_pageModel == null && virtualUrl.LastIndexOf("/", System.StringComparison.Ordinal) > 0) {
var index = virtualUrl.LastIndexOf("/", System.StringComparison.Ordinal);
var action = virtualUrl.Substring(index, virtualUrl.Length - index).Trim(new[] {'/'});
virtualUrl = virtualUrl.Substring(0, index).TrimStart(new[] { '/' });
_pageModel = _session.Query<IPageModel, Document_ByUrl>()
.Customize(x => x.WaitForNonStaleResultsAsOfLastWrite())
.FirstOrDefault(x => x.Metadata.Url == virtualUrl);
_pathData.Action = action;
}
// If the page model still is empty, let's try to resolve if the start page has an action named (virtualUrl)
if(_pageModel == null) {
_pageModel = _session.Query<IPageModel>().SingleOrDefault(x => x.Parent == null);
var controllerName = _controllerMapper.GetControllerName(typeof(ContentController));
var action = virtualUrl.TrimStart(new[] {'/'});
if(!_controllerMapper.ControllerHasAction(controllerName,action)) {
return null;
}
_pathData.Action = action;
}
if (_pageModel == null) {
return null;
}
_pathData.CurrentPageModel = _pageModel;
return _pathData;
}
示例12: QuestionModule
// get rspv's from meetup.com
// https://api.meetup.com/2/rsvps?key=YOUR_KEY&event_id=789&order=name
public QuestionModule(IDocumentSession documentSession)
{
Get["/"] = _ =>
{
// RavenDB
var questions = documentSession.Query<Question>().OrderByDescending(x => x.DateAsked).ToList();
var viewModel = new IndexViewModel
{
Questions = questions.Select(x => new QuestionViewModel(x)).ToList(),
Count = documentSession.Query<Question>().Count(),
};
return View["Index", viewModel];
};
}
示例13: PeformQuery
private static IQueryable<Package> PeformQuery(IDocumentSession session, string search, bool guessIfNoResultsFound = true)
{
var q = session.Query<PackageSearch>("Packages/Search")
.Search(x => x.Query, search)
.Where(x => x.IsLatestVersion && x.IsAbsoluteLatestVersion && x.IsPrerelease == false)
.As<Package>()
.OrderByDescending(x => x.VersionDownloadCount).ThenBy(x => x.Created)
.Take(3);
var packages = q.ToList();
if (packages.Count > 0)
{
foreach (var package in packages)
{
Console.WriteLine("\t{0}", package.Id);
}
return q;
}
if (guessIfNoResultsFound)
{
DidYouMean(session, search);
}
else
{
Console.WriteLine("\tNo search results were found");
}
return null;
}
示例14: ContactModule
public ContactModule(IDocumentSession ravenSession)
: base("/api/contact")
{
Get["/"] = parameters =>
{
var contacts = ravenSession.Query<Contact>()
.OrderBy(x => x.LastName)
.Take(15)
.ToList();
return Response.AsJson(contacts);
};
Get["/{id}"] = parameters =>
{
string contactId = "contact/" + parameters.id;
var contact = ravenSession.Load<Contact>(contactId);
return Response.AsJson(contact);
};
Post["/"] = parameters =>
{
Contact newContact = this.Bind();
newContact.DateOfDeath = newContact.DateOfDeath == DateTime.MinValue
? null
: newContact.DateOfDeath;
ravenSession.Store(newContact);
return Response.AsJson(newContact);
};
}
示例15: RobotProjectionModule
public RobotProjectionModule(IDocumentSession documentSession)
{
Get["/robot/{name}"] = parameters =>
{
if (string.IsNullOrWhiteSpace(parameters.name))
return HttpStatusCode.BadRequest;
var robotResult = documentSession.Load<Robot>(Robot.GetRobotIdFromName(parameters.name));
if (robotResult == null)
return HttpStatusCode.NotFound;
return Response.AsJson(robotResult as object);
};
Get["/robot/byowner/{email}"] = parameters =>
{
if (string.IsNullOrWhiteSpace(parameters.email))
return HttpStatusCode.BadRequest;
string email = parameters.email;
var robotResult = documentSession.Query<Robot>().FirstOrDefault(x => x.OwnerEMail.Equals(email, StringComparison.CurrentCultureIgnoreCase));
if (robotResult == null)
return HttpStatusCode.NotFound;
return Response.AsJson(robotResult as object);
};
}